Ir para conteúdo

POWERED BY:

Arquivado

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

Dougg_Ghost

PHP - Imagens com Links no BD

Recommended Posts

Então pessoal, basicamente estou tentando fazer um sistema de reservas em PHP (reserva de roupas), mas estou com uma dúvida:
No meu arquivo "reserva.php" têm o esse código para buscar as imagens do meu BD e transformá-las em links.

  1. Enfim ele redireciona para a página "detalhe_produto.php", mas infelizmente só dá valor ao "$_SESSION['id'] = $id;" como '3' mesmo eu clicando na foto que corresponde ao ID 01.


CÓDIGO:
<form action="" method="post">
<?php
$sql = "call ConsultarPecasSuperiores"; //Procedure para consultar
$query = mysql_query($sql);
if($query === FALSE) {
die(mysql_error()); // TODO: better error handling
}
while($row = mysql_fetch_array($query)){
$fotos = $row["IMG_PSuperioresS"];
$id = $row["ID_PSuperiores"];
$_SESSION['id'] = $id;

echo "
<p><a href=\"detalhe_produto.php\"><img src=\"$fotos\" width='200' height='200'id='img'/></a>
<input name=\"botao\" type=\"submit\" id=\"botao\" value=\"Teste\" /></p>
<td>

";

}

?>
</form>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você tem que passar o id na Procedure

ConsultarPecasSuperiores(id)

 

Mas é necessário está procedure para uma simples consulta, e ainda mais utilizando funções depreciadas "mysql_*", ou isso é perfumaria mesmo?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Perfumaria mesmo, minha banca para avaliação do site não aceitou os comandos "mysqli", e insiste q a maioria dos comandos com interação no BD seja com procedures...
E a minha dúvida é q tipo, quando eu clicar na imagem com o id 1 ela vá para a página "detalhe_produto.php" e passe o id dela (no caso "1") para essa página, mas em meus 3 testes (com três inserções na tabela) a página recebe o id "2".

Código do "detalhe_produto.php":

 

<?php
$idProd = $_SESSION['id']; //Aqui eu pego o valor do id da roupa mas sempre fica em "3"
$sql = "select * from pecassuperiores where ID_PSuperiores = '{$idProd}'";
$query = mysql_query($sql);
while($row = mysql_fetch_array($query)){
$nome = $row["Nome_PSuperiores"];
$cor = $row["Cor_PSuperiores"];
print_r($idProd);
echo "
<table border = 3>
<td>$idProd</td>;
<tr></tr>
<td>$nome</td>
<tr></tr>
<td>$cor</td>
</table>
";
}?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

Perfumaria mesmo, minha banca para avaliação do site não aceitou os comandos "mysqli", e insiste q a maioria dos comandos com interação no BD seja com procedures...

Eu heim... A banca tem que se atualizar, pois desde 2009 está mudança já vem sendo anunciada, e vai ser removida na versão 6.0 B)

 

  $idProd = $_SESSION['id']; 

O correto para pegar ids passado pela a url, é usar $_GET e não sessão $_SESSION

  $idProd = isset( $_GET['id'] ) ? intva( $_GET['id'] ) : null; 

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

Eu heim... A banca tem que se atualizar, pois desde 2009 está mudança já vem sendo anunciada, e vai ser removida na versão 6.0 B)

 

  $idProd = $_SESSION['id']; 

O correto para pegar ids passado pela a url, é usar $_GET e não sessão $_SESSION

  $idProd = isset( $_GET['id'] ) ? intva( $_GET['id'] ) : null; 

 

Nesse caso eu coloco esse código no "detalhe_produto.php"?

Compartilhar este post


Link para o post
Compartilhar em outros sites

isso, se o link apontar para o codigo acima

detalhe_produto.php?id=4
$idProd = isset( $_GET['id'] ) ? intva( $_GET['id'] ) : null;
$sql = "select * from pecassuperiores where ID_PSuperiores = '{$idProd}'";

E não duplique tópicos, assim manteremos a organização do fórum.

 

http://forum.imasters.com.br/topic/537378-banco-mysql-imagens-e-arrays/

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não sei porque ele ainda não está pegando o id da imagem q eu cliquei ;--; Agora eu to confuso. Era pra ser assim:

 

reserva.php

<?php

$sql = "call ConsultarPecasSuperiores";
$query = mysql_query($sql);
if($query === FALSE) {
die(mysql_error());
}
while($row = mysql_fetch_array($query)){
$fotos = $row["IMG_PSuperioresS"];
$id = $row["ID_PSuperiores"];
echo "
<a href=\"detalhe_produto.php\"><img src=\"$fotos\" width='200' height='200'id='img'/></a> ESPAÇO AQUI
";$idProd = isset( $_GET['id'] ) ? intva( $_GET['id'] ) : $id;" ";}
?>
e como bota no "detalhe_produto.php" pra ele receber esse $idProd?
Sobre a duplicação: Desculpe sou novo no fórum e quis alterar o nome do tópico (tirar a parte MYSQL e botar PHP) e criar um novo foi a melhor solução na minha mente ;-;, como posso apagar aquele duplicado?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Errei aqui, faltou o l na função nativa, correto é intval

$idProd = isset( $_GET['id'] ) ? intval( $_GET['id'] ) : null;

coloque no script mysql_error()

$query = mysql_query($sql) or die( mysql_error() );

e no incio do script para debug de errros em desenvolvimento

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

Compartilhar este post


Link para o post
Compartilhar em outros sites

Agora ele não retorna nada :s


Meu código está desse jeito:

 

reserva.php

<?php
$sql = "call ConsultarPecasSuperiores";
$query = mysql_query($sql);
if($query === FALSE) {
die(mysql_error());
}
while($row = mysql_fetch_array($query)){
$fotos = $row["IMG_PSuperioresS"];
$id = $row["ID_PSuperiores"];
$_SESSION['id'] = $id;
echo "
<p><a href=\"detalhe_produto.php\"><img src=\"$fotos\" width='200' height='200'id='img'/></a>";
}
?>
detalhe_produto.php
<?php
@ini_set('display_errors', 1);
@error_reporting(E_ALL | E_STRICT);
$idProd = isset( $_GET['id'] ) ? intval( $_GET['id'] ) : null;
$sql = "select * from pecassuperiores where ID_PSuperiores = '{$idProd}'";
$query = mysql_query($sql)or die( mysql_error() );
while($row = mysql_fetch_array($query)){
$nome = $row["Nome_PSuperiores"];
$cor = $row["Cor_PSuperiores"];
echo "
<table border = 3>
<td>$idProd</td>;
<tr></tr>
<td>$nome</td>
<tr></tr>
<td>$cor</td>
</table>
";
}?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Amigo senão funcionar agora, reveja sua lógica desde a base.

<?php

$idProd = isset( $_GET['id'] ) ? intval( $_GET['id'] ) : 'parametro passado pela url não existe, ou é invalido, corrija';

$sql = sprintf("SELECT * FROM `pecassuperiores` where `ID_PSuperiores` = '%d'", $idProd) ;
$query = mysql_query($sql) or die( 'Error: '. mysql_error() );

echo $idProd;
var_dump($query);

http://forum.imasters.com.br/topic/171313-exemplo-de-querystring-passo-a-passo/

http://www.ultimatephp.com.br/

Compartilhar este post


Link para o post
Compartilhar em outros sites

"Funcionou", deu o segundo erro 'parametro passado pela url não existe, ou é invalido, corrija'
Vou dar uma pesquisada para passar esse parametro certo :s

Vlw amigo!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Funcionar não funcionou, oque você tem que passar e a id pela url, veja nos links que passei a forma básica de passar paramentos pela url, que é o básico do PHP

 

faça o testes manuais

 

site.com.br/detalhe_produto.php?id=1, para ver se esta indo buscar no db pelo id

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ai é que está, no teste manual funciona (ele pega o id), ;-; acho q tem a ver com as imagens, como salvei só o caminho delas no BD ou algo assim, e não consigo passar o id já q está em Array...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tive uma ideia pra poder mostrar mais ou menos oq estou querendo de forma mais clara...

<form method="post" action="">
<?php
$sql = "call ConsultarPecasSuperiores"; //Pode ser "select * from pecassuperiores"
$query = mysql_query($sql);
if($query === FALSE) {
die(mysql_error());
}
while($row = mysql_fetch_array($query)){
$id = $row["ID_PSuperiores"];
$fotos = $row["IMG_PSuperioresS"];
echo "
<input type=\"image\" img src=\"$fotos\" width='200' height='200'id='img' onClick=\"this.form.submit()\"/>";
if($_POST)
{
echo "
<p>Id da Roupa: $id</p>"; //Aqui quero q apareça o id da roupa clicada ali em cima, mas só aparece o valor da última roupa cadastrada no banco, acho ele dá o último valor do array, mas eu quero q apareça o valor da imagem clicada
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Qual a necessidade de enviar estes dados via post?

Sendo que só uma lista básica

Retire este form e coloque a imagem dentro da tag de link

<a href="site.com.br/detalhe_produto.php?id=$id"><img src="$fotos"></a>

Simplifique

Compartilhar este post


Link para o post
Compartilhar em outros sites

Página em branco agora... Q coisa -.- n entendo o q tá acontecendo

EDIT: Consegui!!! Vlw Man! O erro da pág em branco foi uma coisa boba minha (esqueci um código q n precisava), agora ele mostra o ID correto quando clica na Imagem!!

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.