Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Boa noite pessoal !!
eu tenho duas tabelas contrato e aditivo
eu preciso selecionar os dados onde a chave_aditivo_fk seja igual o id_contrato...
para mim ver na pagina os dados do contrato e do aditivo....
mas oq acontece eu vejo na pagina o contrato e varios aditivos...
sendo q eu preciso ver o o contrato e o aditivo logo em baixo...
você(s) me entendem ?
MAS SE FOQUEM A PARTIR DESSA PARA ONDE TA COMENTADO
<!-- E AUII to tentando fazer!!!!-->
<?php include("conexao.php");
$peg_id = $_GET['id']; //id do fornecedor da pagina visualizar
//Seleção dos dados do contrato de um determinado fornecedor e mostrando na tela.
$sql2= "SELECT * FROM contrato WHERE chave_contrato_fk = '$peg_id '";
$query2=mysql_query($sql2) or exit(mysql_error()); // mysql_query fazendo uma consulta no MYSQL
$resultado2 = mysql_fetch_array($query2); // varredura dos dados da tabela com fetch_array
print"
<tr>
<td> $resultado2[id_contrato] </td>
<td> $resultado2[objeto] </td>
<td> $resultado2[valor_anual] </td>
<td> $resultado2[valor_mensal] </td>
<td><a href=\"pg_admin.php?link=6&id=$resultado2[id_contrato]\">Editar</a></td>
</tr>
";
//link=6 e a pagina de edição de contrato.
?>
</table>
<table width=" 20%" border="1" align="center" cellpadding="10%">
<h3 align="center">Aditivo</h3>
<tr><td> N°Aditivo </td>
<td> Data Inicial </td>
<td> Data Final </td>
</tr>
<!-- E AUII to tentando fazer!!!!-->
<?php include("conexao.php");
$sql= "SELECT * FROM contrato
INNER JOIN aditivo ON chave_aditivo_fk = id_contrato ";
$sql3= "SELECT id_aditivo,
DATE_FORMAT(data_inicial, '%d/%m/%Y') AS data_inicial,
DATE_FORMAT(data_final, '%d/%m/%Y') AS data_final
FROM aditivo ";
$query3= mysql_query( $sql3 )or exit( mysql_error() );
while( $resultado3 = mysql_fetch_assoc($query3)) // varredura dos dados da tabela com fetch_array
{ echo"
<tr>
<td>$resultado3[id_aditivo]</td>
<td>$resultado3[data_inicial]</td>
<td>$resultado3[data_final]</td>
<td>
<a href=\"pg_admin.php?link=7&id=$resultado3[id_aditivo]\">Editar</a>
</td>
</tr>
";
}
?>
por favor aguem me ajude!!
ja li..o codigo ñ apresenta nenhum erro..
eu ainda ñ estudei sobre injection e ñ sei muita coisa sobre isso..
você diisse: ESTA CONSULTA ESTÁ VULNERÁVEL, POR CAUSA DO COMENTÁRIO ACIMA!!!
mas vulneravel como assim?
você disse: <!-- AQUI VOCÊ FECHA UMA TABELA QUE VOCÊ NÃO ABRIU -->
eu abri sim so q ñ posteii para ñ ficar muito grande o codigo...
foi eu incluir denovo a conexao ..mas ja tireii ..
você disse:**Evite utilizar mysql_*. Troque por PDO ou no mínimo MySQLi.**
e pra mim evitar usar o nome mysql? ou o banco?
mas precisa remover para o topico de mysql mesmo.. mas o pessoal do PHP resolve tambem problemas desse tipo..
eu consertei o codigo mas ñ resolveu meu problema
<?php
//$sql= "SELECT * FROM contrato
//INNER JOIN aditivo ON id_contrato = chave_aditivo_fk ";
$sql3= "SELECT id_aditivo,
DATE_FORMAT(data_inicial, '%d/%m/%Y') AS data_inicial,
DATE_FORMAT(data_final, '%d/%m/%Y') AS data_final
FROM aditivo INNER JOIN contrato ON id_contrato = chave_aditivo_fk ";
$query3= mysql_query( $sql3 )or exit( mysql_error() );
while( $resultado3 = mysql_fetch_assoc($query3)) // varredura dos dados da tabela com fetch_array
{ echo"
<tr>
<td>$resultado3[id_aditivo]</td>
<td>$resultado3[data_inicial]</td>
<td>$resultado3[data_final]</td>
<td>
<a href=\"pg_admin.php?link=7&id=$resultado3[id_aditivo]\">Editar</a>
</td>
</tr>
";
}
?>
MAS quando eu uso ASPAS simples dentro do array da erro
Parse error: parse error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in C:\Arquivos de programas\EasyPHP 2.0b1\www\ISSEC\ver_contrato_aditivo.php on line 37
pq eu estou dentro de um PRINT" ";
entao fica sem aspas simples..mesmo.. ou ñ?
>
ja li..o codigo ñ apresenta nenhum erro..
Habilitou a exibição de TODAS as mensagens de erro e mesmo assim não apareceu nenhum aviso?
>
eu ainda ñ estudei sobre injection e ñ sei muita coisa sobre isso..
você diisse: ESTA CONSULTA ESTÁ VULNERÁVEL, POR CAUSA DO COMENTÁRIO ACIMA!!!
mas vulneravel como assim?
Um artigo que exemplifica, de forma simples, o problema. - Clique aqui - foi o primeiro que eu achei no Google, nem li direito. Pela passada de olho me parece que dá pra ter uma ideia do problema.
Como resolver? Neste seu código, de maneira simples. Você precisa que o valor passado por GET seja um número inteiro, certo? Então, vamos garantir que ele seja um inteiro:
$peg_id = intval($_GET['id']); //id do fornecedor da pagina visualizar
>
você disse:**Evite utilizar mysql_*. Troque por PDO ou no mínimo MySQLi.**
e pra mim evitar usar o nome mysql? ou o banco?
Estou falando das funções mysql_, como mysql_query(), mysql_fetch_...
>
mas precisa remover para o topico de mysql mesmo.. mas o pessoal do PHP resolve tambem problemas desse tipo..
Se o problema for na forma como a consulta é montada, o local correto do tópico é em MySQL e eu moverei para lá.
-----------------------------
Agora sobre o seu código. Ao executar, é gerado um HTML. Qual HTML foi gerado? O que você esperava que aparecesse?
Carlos Eduardo
la li os termos de conduta..
o meu cogigo ñ apresenta nenhul erro!!!
por enquanto eu uso o or exit( mysql_error() ) para ver o erro em portugues!!
Mas de qualquer forma o $peg_id = $_GET['id'];...mas ser inteiro..pq o -id- ñ e um numero quebrado..2,23 etc..
mas vou mundar mesmo aasim
meu cogigo tem HTML:
<html>
<head>
<title> ISSEC</title>
</head> <!-- -->
<body bgcolor="silver">
<?php /*include("verifica.php");//aquivo para ver se o usuario tem permissao.*/
$pega_nome_empresa = $_GET['nome_empresa']; // O nome da empresa nessa pagina.
echo"<h2 align=center>$pega_nome_empresa</h2>";
?>
<table width= "14%" border=" 1 " align= "center" cellpadding="10%">
<h3 align="center">Contrato</h3>
<tr><td> N°Contrato </td>
<td> Objeto </td>
<td> Valor Anual </td>
<td> Valor Mensal </td>
</tr>
<?php include("conexao.php");
$peg_id = intval($_GET['id']); //id do fornecedor da pagina visualizar
//Seleção dos dados do contrato de um determinado fornecedor e mostrando na tela.
$sql2= "SELECT * FROM contrato WHERE chave_contrato_fk = '$peg_id '";
$query2=mysql_query($sql2) or exit(mysql_error()); // mysql_query fazendo uma consulta no MYSQL
$resultado2 = mysql_fetch_array($query2); // varredura dos dados da tabela com fetch_array
print"
<tr>
<td> $resultado2[id_contrato] </td>
<td> $resultado2[objeto] </td>
<td> $resultado2[valor_anual] </td>
<td> $resultado2[valor_mensal] </td>
<td><a href=\"pg_admin.php?link=6&id=$resultado2[id_contrato]\">Editar</a></td>
</tr>
";
//link=6 e a pagina de edição de contrato.
?>
</table>
<table width=" 20%" border="1" align="center" cellpadding="10%">
<h3 align="center">Aditivo</h3>
<tr><td> N°Aditivo </td>
<td> Data Inicial </td>
<td> Data Final </td>
</tr>
<!-- E AUII to tentando fazer!!!!-->
<?php
//$sql= "SELECT * FROM contrato
//INNER JOIN aditivo ON id_contrato = chave_aditivo_fk ";
$sql3= "SELECT id_aditivo,
DATE_FORMAT(data_inicial, '%d/%m/%Y') AS data_inicial,
DATE_FORMAT(data_final, '%d/%m/%Y') AS data_final
FROM aditivo INNER JOIN contrato ON id_contrato = chave_aditivo_fk
WHERE chave_aditivo_fk = id_contrato";
$query3= mysql_query( $sql3 )or exit( mysql_error() );
while( $resultado3 = mysql_fetch_assoc($query3)) // varredura dos dados da tabela com fetch_array
{ echo"
<tr>
<td>$resultado3[id_aditivo]</td>
<td>$resultado3[data_inicial]</td>
<td>$resultado3[data_final]</td>
<td>
<a href=\"pg_admin.php?link=7&id=$resultado3[id_aditivo]\">Editar</a>
</td>
</tr>
";
}
?>
</table>
</body>
</html>
NA parte do codigo INNER JOIN eu pretendo igualar os campos chave_aditivo_fk = id_contrato..
Mas pq?
pq eu preciso ver somente ....
TABLE..contrato..
dados dos campos
TABLE aditivo
dados dos capos..
so ISSO!!
e ñ
TABLE..contrato..
dados dos campos
TABLE aditivo
dados dos capos..
dados dos capos..
dados dos capos..
dados dos capos..
sql injection e para proteger o sistema..
e eu ñ preciso usar isso agora..
Então, vamos ver se é isto que você precisa.
<html>
<head>
<title> ISSEC</title>
</head> <!-- -->
<body bgcolor="silver">
<?php /*include("verifica.php");//aquivo para ver se o usuario tem permissao.*/
$pega_nome_empresa = $_GET['nome_empresa']; // O nome da empresa nessa pagina.
echo"<h2 align=center>$pega_nome_empresa</h2>";
?>
<table width= "14%" border=" 1 " align= "center" cellpadding="10%">
<h3 align="center">Contrato</h3>
<tr><td> N°Contrato </td>
<td> Objeto </td>
<td> Valor Anual </td>
<td> Valor Mensal </td>
</tr>
<?php include("conexao.php");
$peg_id = intval($_GET['id']); //id do fornecedor da pagina visualizar
//Seleção dos dados do contrato de um determinado fornecedor e mostrando na tela.
$sql2= "
SELECT id_contrato, objeto, valor_anual, valor_mensal, id_aditivo, DATE_FORMAT(data_inicial, '%d/%m/%Y') AS data_inicial, DATE_FORMAT(data_final, '%d/%m/%Y') AS data_final
FROM aditivo
INNER JOIN contrato ON (id_contrato = chave_aditivo_fk )
WHERE chave_contrato_fk = $peg_id;";
$query2=mysql_query($sql2) or exit(mysql_error()); // mysql_query fazendo uma consulta no MYSQL
$resultado2 = mysql_fetch_array($query2); // varredura dos dados da tabela com fetch_array
print"
<tr>
<td> $resultado2[id_contrato] </td>
<td> $resultado2[objeto] </td>
<td> $resultado2[valor_anual] </td>
<td> $resultado2[valor_mensal] </td>
<td><a href=\"pg_admin.php?link=6&id=$resultado2[id_contrato]\">Editar</a></td>
</tr>
";
//link=6 e a pagina de edição de contrato.
?>
</table>
<table width=" 20%" border="1" align="center" cellpadding="10%">
<h3 align="center">Aditivo</h3>
<tr><td> N°Aditivo </td>
<td> Data Inicial </td>
<td> Data Final </td>
</tr>
<!-- E AUII to tentando fazer!!!!-->
<?php
echo"
<tr>
<td>$resultado2[id_aditivo]</td>
<td>$resultado2[data_inicial]</td>
<td>$resultado2[data_final]</td>
<td>
<a href=\"pg_admin.php?link=7&id=$resultado2[id_aditivo]\">Editar</a>
</td>
</tr>
";
}
?>
</table>
</body>
</html>
Veja se é assim. Se não for, faça o seguinte. Após executar, vá no navegador e clique em CTRL + U. Copie o HTML gerado e cole aqui. Modifique o HTML para ficar como você quer que apareça, porque está difícil de entender o que você precisa.
Carlos Eduardo
Heita cara tu se responde,, ou tu sabe Muito!!!!
eu numca teria pensado desta forma...
entao no meu caso eu precisava somente de um SELECT... e em vez de "*" pegava todos os campos das duas tabelas..
E Where chave_contrato_fk = $peg_id;";
E
tudo em UM fetch_array so !!!
Muito bom Viuuu
Muito Obrigado cara e Obriigago tb pela paciencia... e a todos deste topico...
topico resolvido
:joia:
>
sql injection e para proteger o sistema..
e eu ñ preciso usar isso agora..
Eu não falei nada sobre isto antes, mas... Cara, me parece que você está começando com PHP, então é legal sempre buscar o melhor em todos os programas que você fizer. Segurança deve ser a preocupação número ZERO em TODOS os programas que você fizer. A segunda preocupação deve ser com o desempenho do sistema.
Carlos Eduardo
pois er
começei a estudar PHP a pouco tempo!!
depois q o sitema estiver pronto...
ai sim eu me preocupo com a segurança....
vlw amigo!!
Cara, primeiro de tudo, dá uma lida neste tópico aqui.
Depois, leia os comentários EM CAIXA ALTA que eu coloquei dentro do código.
<?php
// AQUI VOCÊ INCLUI O ARQUIVO DE CONEXÃO PELA PRIMEIRA VEZ
include("conexao.php");
// SQL INJECTION NA VEIA!!!! VALIDA ESTE VALOR ANTES DE JOGAR NA CONSULTA
$peg_id = $_GET['id']; //id do fornecedor da pagina visualizar
//Seleção dos dados do contrato de um determinado fornecedor e mostrando na tela.
// ESTA CONSULTA ESTÁ VULNERÁVEL, POR CAUSA DO COMENTÁRIO ACIMA!!!
// NÃO EXIBA O ERRO DO MYSQL PARA O USUÁRIO, POIS É UM ERRO DE SEGURANÇA
$query2=mysql_query($sql2) or exit(mysql_error()); // mysql_query fazendo uma consulta no MYSQL
$resultado2 = mysql_fetch_array($query2); // varredura dos dados da tabela com fetch_array
// USE O ÍNDICE DO ARRAY ENTRE ASPAS SIMPLES ('') - $resultado2[id_contrato] -> $resultado2['id_contrato']
print"
<!-- AQUI VOCÊ FECHA UMA TABELA QUE VOCÊ NÃO ABRIU -->
Evite utilizar mysql_*. Troque por PDO ou no mínimo MySQLi.
Em princípio isto deve resolver os problemas do PHP. Se a consulta não retornar o que você quer, então o problema vai estar na consulta, daí vamos mover para o fórum de MySQL, que é o mais indicado.