Ir para conteúdo

Arquivado

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

Remazela

PHP - Impressão de Produtos na Tela desordenado e repete

Recommended Posts

Caros amigos

Estou com um problema de impressão de produtos na tela que não consigo identificar o erro.

Preciso mostrar na Tela as resposta que cada produto teve dos seus fornecedores.

Abaixo mostro como está sendo impresso:

3 - Digit Mat. p/ Escritório CÓDIGO NOME

3.3

MATERIAL DE ESCRITÓRIO

140 - CANETA BIC - AZUL

3 - QuantMed Medicamentos e Mat. Hosp. Ltda

Qtde..: 20

Valor.: 1,10

Total.: 22,00

.

1 - ABC Med

Qtde..: 20

Valor.: 1,15

Total.: 23,00

.

2 - Airin Medical

Qtde..: 50

Valor.: 1,20

Total.: 60,00

.

131 - RÉGUA 30CM - ACRÍLICA

3 - QuantMed Medicamentos e Mat. Hosp. Ltda

Qtde..: 10

Valor.: 2,30

Total.: 23,00

.

2 - Airin Medical

Qtde..: 10

Valor.: 2,50

Total.: 25,00

.

1 - ABC Med

Qtde..: 10

Valor.: 3,20

Total.: 32,00

.

A PARTIR DESTE PONTO REPETE VÁRIAS VEZES, CONFORME SUAS RESPOSTAS

150 - ESTILETE MÉDIO

1 - ABC Med

Qtde..: 20

Valor.: 4,50

Total.: 90,00

.

101 - CADERNO UNIVERSITÁRIO 1-MAT

3 - QuantMed Medicamentos e Mat. Hosp. Ltda

Qtde..: 5

Valor.: 4,50

Total.: 22,50

.

150 - ESTILETE MÉDIO

3 - QuantMed Medicamentos e Mat. Hosp. Ltda

Qtde..: 20

Valor.: 4,70

Total.: 94,00

.

101 - CADERNO UNIVERSITÁRIO 1-MAT

2 - Airin Medical

Qtde..: 5

Valor.: 5,50

Total.: 27,50

.

150 - ESTILETE MÉDIO

2 - Airin Medical

Qtde..: 20

Valor.: 7,00

Total.: 140,00

.

101 - CADERNO UNIVERSITÁRIO 1-MAT

1 - ABC Med

Qtde..: 5

Valor.: 7,00

Total.: 35,00

A partir do 3º item, imprime várias vezes o mesmo produto, conforme suas respostas.

Abaixo o código fonte:

<?php function mostraResposta(){    include"Connections/config.php";        $cliente = '3';        $cotaNum = '3.3';		$sql = "SELECT t.cotaId, t.cotaNumero, t.cotaTitulo, t.cotaStatus, t.clienteId,		               c.clienteId, c.nome		          FROM cotacao t,		               clientes c		         WHERE c.clienteId = '$cliente'         		           AND t.clienteId = '$cliente'	           		           AND t.cotaNumero = '$cotaNum'	 		      ORDER BY t.clienteId, t.cotaTitulo ASC";		$stmt = $conecta->prepare($sql);		$stmt->execute();		$num = $stmt->rowCount();		$clientes = null;        		if($num > 0) {		    while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {		           extract($row);		        if($clientes != $clienteId) {		            if(!is_null($clientes)) { echo "</table>"; } 		            // Fechando a tabela da ultima categoria impressa antes		            // de abrir a nova					echo " <br/><br/>";		            echo "<h1>{$clienteId} - {$nome}</h1>";		            echo "<table>";		            echo "  <tr>";		            echo "      <th>CÓDIGO</th>";		            		            echo "      <th>NOME</th>";		            echo "  </tr>";		            $clientes = $clienteId;                 		        } //Fecha IF               	        		        echo "  <tr>";		        echo "      <td><div class='cod-produto'>{$cotaNumero}</div></td>";		        echo "      <td><div class='nome-produto'>{$cotaTitulo}</div></td>";		        echo "  </tr>";		    } //Fecha While		    echo "</table>"; // Fechando a tabela da última categoria do laço             mostraRespostaForn(); //Chamo a função que retorna as respostas dos fornecedores por produto		} //Fecha If $num              }?><?php function mostraRespostaForn(){    include"Connections/config.php";        $cliente = '3';        $cotaNum = '3.3';			$sql = "SELECT r.cotaRespId, r.cotaItensId, r.clienteId, r.cotaNumero, r.codProdClie, r.cotaOferta, r.fornecedorId,			               r.cotaRespQtde, r.cotaRespVlr, r.cotaRespTotal,			               f.fornecedorId, f.nome,			               p.produtoId, p.codProdClie, p.produtoDescr, p.clienteId			          FROM cotacaoResposta r,			               fornecedores f,			               produto p			         WHERE r.clienteId = '$cliente' 			           AND r.cotaNumero = '$cotaNum'	 			           AND r.fornecedorId = f.fornecedorId   			           AND r.cotaOferta = '2'    				           AND p.clienteId = '$cliente'			           AND r.codProdClie = p.codProdClie 			      ORDER BY r.cotaRespVlr ASC";			$stmt = $conecta->prepare($sql);			$stmt->execute();		    $num = $stmt->rowCount();	   	    $produto = null;        		if($num > 0) {		    while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {		           extract($row);		           		        if($produto != $codProdClie) {		            if(!is_null($produto)) { echo "</table>"; } 		            // Fechando a tabela do último Produto impresso antes de abrir a nova					echo " <br/>";		            echo "<h2>{$codProdClie} - {$produtoDescr}</h2>";		            echo "<table  border='0' cellpadding='3' cellspacing='2' >";	                           $produto = $codProdClie;                    }      		        echo "  <tr style='color:#1C1C71; font-variant:small-caps; 			                                          font:16px Arial, Helvetica, sans-serif; font-weight: bold;'>";			        echo "      <td><div class='fornec'>{$fornecedorId} - {$nome}</div></td>";		            echo "  </tr>";                    echo "  <tr>";			        echo "      <td><div class='no'>Qtde..: {$cotaRespQtde}</div></td>";					        echo "  </tr>";                    echo "  <tr>";			        echo "      <td><div class='nme-produto'>Valor.: {$cotaRespVlr}</div></td>";  			        echo "  </tr>";                       echo "  <tr>";			        echo "      <td><div class='nme-produto'>Total.: {$cotaRespTotal}</div></td>";  			        echo "  </tr>";  			        echo "  <td>.</td>";                 		                       			    } //Fecha While                     			    echo "</table>"; // Fechando a tabela da última categoria do laço          }    }?>

Por favor, como faço para impedir que repita os Produtos mais de uma vez conforme as respostas ?

Grato,

Renato

Compartilhar este post


Link para o post
Compartilhar em outros sites

Caro amigo

Fiz conforme sua orientação e não tive sucesso.

poderia me ajudar com um exemplo, estou usando 3 tabelas. Produto/Fornecedor/CotacaoResposta

Grato,

Renato

Compartilhar este post


Link para o post
Compartilhar em outros sites

Utilize GROUP BY e agrupe pelo ID do produto.

http://www.w3schools.com/sql/sql_groupby.asp

.....

WHERE r.clienteId = '$cliente'
AND r.cotaNumero = '$cotaNum'
AND r.fornecedorId = f.fornecedorId
AND r.cotaOferta = '2'
AND p.clienteId = '$cliente'
AND r.codProdClie = p.codProdClie

GROUP BY p.produtoId

ORDER BY r.cotaRespVlr ASC"

Compartilhar este post


Link para o post
Compartilhar em outros sites

Caros amigos

Conforme orientação acrescentei o GROUP BY, deu certo em partes, conforme abaixo trouxe os seguintes resultados:

140 - CANETA BIC - AZUL
2 - Airin Medical
Qtde..: 50
Valor.: 1,20
Total.: 60,00
.
131 - RÉGUA 30CM - ACRÍLICA
2 - Airin Medical
Qtde..: 10
Valor.: 2,50
Total.: 25,00
.
101 - CADERNO UNIVERSITÁRIO 1-MAT
2 - Airin Medical
Qtde..: 5
Valor.: 5,50
Total.: 27,50
.
150 - ESTILETE MÉDIO
2 - Airin Medical
Qtde..: 20
Valor.: 7,00
Total.: 140,00

===========================================================================================

Cada Produto tem mais de um Fornecedor que respondeu.

Conforme mostrei acima, o problema parte do 3.item para frente, não entendo porque não agrupa os fornecedores que respondeu a resposta para o produto.

OBSERVAÇÃO: cada produto existe 3 resposta, como faço para relacionar 3 ou mais tabelas, se esse for o erro.

Por favor, não consigo mais entender e achar o erro, que está me deixando louco.

Grato,

Renato

140 - CANETA BIC - AZUL
2 - Airin Medical
Qtde..: 50
Valor.: 1,20
Total.: 60,00
.
131 - RÉGUA 30CM - ACRÍLICA
2 - Airin Medical
Qtde..: 10
Valor.: 2,50
Total.: 25,00
.
101 - CADERNO UNIVERSITÁRIO 1-MAT
2 - Airin Medical
Qtde..: 5
Valor.: 5,50
Total.: 27,50
.
150 - ESTILETE MÉDIO
2 - Airin Medical
Qtde..: 20
Valor.: 7,00
Total.: 140,00

Compartilhar este post


Link para o post
Compartilhar em outros sites

Desta forma:

140 - CANETA BIC - AZUL
3 - QuantMed Medicamentos e Mat. Hosp. Ltda
Qtde..: 20
Valor.: 1,10
Total.: 22,00
.
1 - ABC Med
Qtde..: 20
Valor.: 1,15
Total.: 23,00
.
2 - Airin Medical
Qtde..: 50
Valor.: 1,20
Total.: 60,00
. 131 - RÉGUA 30CM - ACRÍLICA
3 - QuantMed Medicamentos e Mat. Hosp. Ltda
Qtde..: 10
Valor.: 2,30
Total.: 23,00
.
2 - Airin Medical
Qtde..: 10
Valor.: 2,50
Total.: 25,00
.
1 - ABC Med
Qtde..: 10
Valor.: 3,20
Total.: 32,00
150 - ESTILETE MÉDIO
1 - ABC Med
Qtde..: 20
Valor.: 4,50
Total.: 90,00
3 - QuantMed Medicamentos e Mat. Hosp. Ltda
Qtde..: 20
Valor.: 4,70
Total.: 94,00
2 - Airin Medical
Qtde..: 20
Valor.: 7,00
Total.: 140,00
101 - CADERNO UNIVERSITÁRIO 1-MAT
3 - QuantMed Medicamentos e Mat. Hosp. Ltda
Qtde..: 5
Valor.: 4,50
Total.: 22,50
2 - Airin Medical
Qtde..: 5
Valor.: 5,50
Total.: 27,50
1 - ABC Med
Qtde..: 5
Valor.: 7,00
Total.: 35,00

Preciso que seja desta forma acima.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Caros amigos

Por favor, Em Nome do Senhor Jesus, me perdoa por recorrer ao auxílio dos amigos, mas infelizmente estou montando uma Lista(Resposta) na Tela que está me deixando LOUCO.

Preciso mostrar o seguinte:

PRODUTO X

resposta 3 - vlr: R$ 0,01

resposta 2 - vlr: R$ 0,02

resposta 1 - vlr: R$ 0,03

PRODUTO Y

resposta 1 - vlr: R$ 0,10

resposta 3 - vlr: R$ 0,30

resposta 2 - vlr: R$ 0,50

PRODUTO Z

resposta 2 - vlr: R$ 0,15

resposta 1 - vlr: R$ 0,30

resposta 3 - vlr: R$ 0,40

Fiz várias tentativas e cheguei a um suposto resultado +/- favorável.

Usei a opção de GROUP BY, agrupou todos os fornecedores, mas infelizmente trás na tela os mesmo valores e quantidade.

O GROUP BY, trás assim:

PRODUTO X

resposta 1 - vlr: R$ 0,01

resposta 2 - vlr: R$ 0,02

resposta 3 - vlr: R$ 0,03

PRODUTO Y

resposta 1 - vlr: R$ 0,01

resposta 2 - vlr: R$ 0,02

resposta 3 - vlr: R$ 0,03

PRODUTO Z

resposta 1 - vlr: R$ 0,01

resposta 2 - vlr: R$ 0,02

resposta 3 - vlr: R$ 0,03

Obs.: cada resposta tem quantidade e valores distintos.

Abaixo o código que estou utilizando:


//Aqui faço o cabeçalho do Titulo
//códigoEmpresa - descriçãoEmpresa

<?php function mostraResposta(){
    include"Connections/config.php";

        $cliente = '3';
        $cotaNum = '3.3';

		$sql = "SELECT t.cotaId, t.cotaNumero, t.cotaTitulo, t.cotaStatus, t.clienteId,
		               c.clienteId, c.nome
		          FROM cotacao t,
		               clientes c
		         WHERE c.clienteId = '$cliente'         
		           AND t.clienteId = '$cliente'	           
		           AND t.cotaNumero = '$cotaNum'	 
		      ORDER BY t.clienteId, t.cotaTitulo ASC";

		$stmt = $conecta->prepare($sql);
		$stmt->execute();

		$num = $stmt->rowCount();
		$clie = null;        

		if($num > 0) {

		    while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
		           extract($row);

		        if($clie != $clienteId) {

		            if(!is_null($clie)) { echo "</table>"; } 
		            // Fechando a tabela da ultima categoria impressa antes
		            // de abrir a nova
					echo " <br/><br/>";

		            echo "<h1>{$clienteId} - {$nome}</h1>";

		            echo "<table>";
		            echo "  <tr>";
		            echo "      <th>CÓDIGO</th>";		            
		            echo "      <th>NOME</th>";
		            echo "  </tr>";

		            $clie = $clienteId;
                 
		        } //Fecha IF
               
	        
		        echo "  <tr>";
		        echo "      <td><div class='cod-produto'>{$cotaNumero}</div></td>";
		        echo "      <td><div class='nome-produto'>{$cotaTitulo}</div></td>";
		        echo "  </tr>";

		    } //Fecha While

		    echo "</table>"; // Fechando a tabela da última categoria do laço

		} //Fecha If $num
    

    }

?>


//Aqui trago todos os produtos que a empresa quiz cotar
//códigoProduto - descriçãoProduto
<?php function mostraRespostaItens(){

    include"Connections/config.php";

        $cliente = '3';
        $cotaNum = '3.3';

			$sql = "SELECT i.cotaItensId, i.cotaNumImport, i.codProdClie, i.cotaQtde, i.cotaComenta,
			               i.cotaVerTxt, i.cotaId, i.clienteId, i.cotaNumero,
			               p.produtoId, p.codProdClie, p.produtoDescr, p.clienteId
			          FROM cotacaoItens i,
			               produto p
			         WHERE i.codProdClie = p.codProdClie
			           AND i.cotaNumero = '$cotaNum'	   	
			           AND i.clienteId = p.clienteId 	           
			      ORDER BY i.cotaNumero ASC";

			$stmt = $conecta->prepare($sql);
			$stmt->execute();

		    $num = $stmt->rowCount();

	   	    $prod = null;        

        
		if($num > 0) {

		    while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
		           extract($row);		           	        

		        if($prod != $codProdClie) {

		            if(!is_null($prod)) { echo "</table>"; } 
		            // Fechando a tabela do último Produto impresso antes de abrir a nova
					echo " <br/>";

		            echo "<h2>{$codProdClie} - {$produtoDescr}</h2>";

		            echo "<table  border='0' cellpadding='3' cellspacing='2' >";	  
                    
                    //Chamo as respostas dos fornecedores
                    mostraRespFornec();

                    }              		       

			    } //Fecha While


                    
 			    echo "</table>"; // Fechando a tabela da última categoria do laço

          }
    }
?>


//Aqui trago todos os fornecedores que responderam, com seus valores e quantidade
//qdo agrupo os fornecedores, traz sempre os mesmo valores e quantidade
<?php function mostraRespFornec(){

    include"Connections/config.php";

        $cliente = '3';
        $cotaNum = '3.3';

			$sql = "SELECT r.cotaRespId, r.cotaItensId, r.cotaNumero, r.codProdClie, r.cotaOferta, r.fornecedorId,
			               r.cotaRespQtde, r.cotaRespVlr, r.cotaRespTotal,
			               f.fornecedorId, f.nome,
			               i.cotaItensId, i.cotaNumero, i.codProdClie
			          FROM cotacaoResposta r,
			               fornecedores f,
			               cotacaoItens i
			         WHERE i.codProdClie = r.codProdClie  
			           AND r.cotaOferta = '2'    	
			           AND r.fornecedorId = f.fornecedorId		
			      GROUP BY f.fornecedorId
			      ORDER BY r.cotaRespVlr ASC";

			$stmt = $conecta->prepare($sql);
			$stmt->execute();

		    $num = $stmt->rowCount();

	   	    $prod = null;        

        
		if($num > 0) {

            while($row = $stmt->fetch($prod)){
		    //while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
		           extract($row);		           	        

		          if($prod != $fornecedorId) {

		            if(!is_null($prod)) { echo "</table>"; } 

      		        echo "  <tr style='color:#1C1C71; font-variant:small-caps; 
			                                          font:16px Arial, Helvetica, sans-serif; font-weight: bold;'>";
			        echo "      <td><div class='fornec'>{$fornecedorId} - {$nome}</div></td>";
		            echo "  </tr>";

                    echo "  <tr>";
			        echo "      <td><div class='no'>Qtde..: {$cotaRespQtde}</div></td>";		
			        echo "  </tr>";

                    echo "  <tr>";
			        echo "      <td><div class='nme-produto'>Valor.: {$cotaRespVlr}</div></td>";  
			        echo "  </tr>";   

                    echo "  <tr>";
			        echo "      <td><div class='nme-produto'>Total.: {$cotaRespTotal}</div></td>";  
			        echo "  </tr>";  

			        echo "  <td>.</td>";                 		       
                 }

			    } //Fecha While
                    
 			    echo "</table>"; // Fechando a tabela da última categoria do laço

          }
    }
?>

Por favor, me ajuda.

Grato,

Renato

PRODUTO X

resposta 1

resposta 1

resposta 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Vamos lá então, você tem consulta demais, apenas uma resolve!

Comece a refatoração e faça a associação das tabelas pelos comentarios, pois é ela que vai gerar o looooooooooooooop, as demais entra como belongs To (n:m)

http://softwareengineering.stackexchange.com/questions/152731/what-is-the-main-difference-between-has-many-and-belongs-to-relationship-in-mysq

Exemplo:

SELECT ... FROM comentarios AS c 
LETF JOIN produtos as p ON ... 
RIGTH JOIN fornecedor as f. ON ... 
WHERE ... 
GROUP BY coluna1, coluna2 
ORDER BY p.coluna, c.coluna ASC LIMIT ...

Ao associar vai gerar o array, desta forma você sabera quais estão duplicando na query, é só agrupar!

Group BY e Order BY você pode usar mais de uma coluna, mas tem que criar os indices no DB também para otimizar a consulta ja que são varias associações.

Refaça e volte a postar.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Caro amigo

Williams

Vou testar e retornarei com o resultado.

Apenas uma pergunta:

devo efetuar a refatoração em todas, desde da primeira consulta ao Banco de Dados ?

Grato,

Renato

Compartilhar este post


Link para o post
Compartilhar em outros sites

Exato!

Unica coisa que você precisa é retornar o array

<?php 

function mostraResposta()
{
   

    include"Connections/config.php";


    $sql = "SELECT ... FROM comentarios AS c 
    LETF JOIN produtos as p ON ... 
    RIGTH JOIN fornecedor as f. ON ... 
    WHERE ... 
    GROUP BY coluna1, coluna2 
    ORDER BY p.coluna, c.coluna ASC LIMIT ...";

   $stmt = $conecta->prepare($sql);
   $stmt->execute();

  if($stmt->rowCount() > 0) {
     return $stmt->fetch(PDO::FETCH_ASSOC);
  }

   return false;

}

Html você vai reaproveitar pra montar um só e dentro do laço, porem não tem a necessidade de ficar junto a função e nem pode, não é responsabilidade da função fazer tudo isso. A unica coisa é listar os dados, tendo ciência disso.

basta usar a função em qualquer canto depois.

foreach (mostraResposta() as $key => $value) {
  # code html
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Caro amigo

Williams

Por favor, me perdoa por recorrer a sua ajuda novamente, infelizmente estou com dúvidas em relação a parte que cita:

    $sql = "SELECT ... FROM comentarios AS c 
    LETF JOIN produtos as p ON ... 
    RIGTH JOIN fornecedor as f. ON ... 
    WHERE ... 
    GROUP BY coluna1, coluna2 
    ORDER BY p.coluna, c.coluna ASC LIMIT ...";

Ainda não consegui entender, fazer relacionamento com 2 tabelas eu consigo, mas quando tem mais de 3 tabelas faço a maior confusão.

Tenho a seguinte noção:

o cliente tem Cotação X

-------------- a Cotação X tem Produtos Y

--------------------------------- os Produtos Y tem Respostas Z

------------------------------------------------------- as Respostas Z tem Fornecedores K

Por favor, pode me ajudar na parte dos SELECT e do JOIN ?

Abaixo coloquei como estão minha tabela:

CREATE TABLE IF NOT EXISTS `cotacao` (
  `cotaId` int(11) NOT NULL AUTO_INCREMENT,
  `cotaNumero` varchar(255) DEFAULT NULL,         
  `cotaDtInicio` date NULL DEFAULT NULL,
  `cotaHrsInicio` time NULL DEFAULT NULL,
  `cotaDtFim` date NULL DEFAULT NULL,      
  `cotaHrsFim` time NULL DEFAULT NULL,  
  `cotaTitulo` varchar(255) DEFAULT NULL,   
  `cotaObserva` varchar(255) DEFAULT NULL,      
  `cotaStatus` int(1) NOT NULL,  
  `clienteId` varchar(11) DEFAULT NULL,  
  `desc_categ` varchar(255) DEFAULT NULL,
  `desc_pgto` varchar(255) DEFAULT NULL, 


CREATE TABLE IF NOT EXISTS `cotacaoItens` (
  `cotaItensId` int(11) NOT NULL AUTO_INCREMENT,
  `cotaNumImport` varchar(255) DEFAULT NULL,    
  `codProdClie` varchar(255) DEFAULT NULL,       
  `cotaQtde` varchar(255) DEFAULT NULL,
  `cotaComenta` varchar(255) DEFAULT NULL,  
  `cotaVerTxt` varchar(1) DEFAULT NULL,  
  `cotaId` varchar(11) DEFAULT NULL,        
  `clienteId` varchar(11) DEFAULT NULL,    
  `cotaNumero` varchar(255) DEFAULT NULL,


CREATE TABLE IF NOT EXISTS `cotacaoResposta` (
  `cotaRespId` int(11) NOT NULL AUTO_INCREMENT,
  `cotaRespQtde` varchar(255) DEFAULT NULL,    
  `cotaRespVlr` varchar(255) DEFAULT NULL,       
  `cotaRespTotal` varchar(255) DEFAULT NULL,  
  `cotaRespMarca` varchar(255) DEFAULT NULL,
  `cotaRespObs` varchar(255) DEFAULT NULL,
  `cotaRespEntrega` varchar(255) DEFAULT NULL,  
  `cotaRespPgto` varchar(255) DEFAULT NULL, 
  `cotaNumero` varchar(255) DEFAULT NULL,   
  `cotaItensId` int(11) DEFAULT NULL,        
  `codProdClie` varchar(255) DEFAULT NULL,    
  `clienteId` varchar(11) DEFAULT NULL, 
  `apres_unid` varchar(255) DEFAULT NULL, 


CREATE TABLE IF NOT EXISTS `produto` (
  `produtoId` int(11) NOT NULL AUTO_INCREMENT,
  `clienteId` varchar(11) DEFAULT NULL,
  `id_categ` varchar(11) DEFAULT NULL,
  `id_unid` varchar(11) DEFAULT NULL,
  `codProdClie` varchar(255) DEFAULT NULL,   
  `produtoDescr` varchar(255) DEFAULT NULL,
  `produtoStatus` int(1) NOT NULL,


CREATE TABLE IF NOT EXISTS `fornecedores` (
  `fornecedorId` int(11) NOT NULL AUTO_INCREMENT,
  `criadoEM` timestamp NULL DEFAULT NULL,
  `modificadoEM` timestamp NULL DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP,
  `fornecedorStatus` varchar(255) DEFAULT NULL,
  `usuarioNivel` varchar(255) DEFAULT NULL,
  `nome` varchar(255) DEFAULT NULL,
  `email` varchar(255) DEFAULT NULL,
  `senha` varchar(150) DEFAULT NULL,
  `telefone` varchar(20) DEFAULT NULL,


CREATE TABLE IF NOT EXISTS `clientes` (
  `clienteId` int(11) NOT NULL AUTO_INCREMENT,
  `criadoEM` timestamp NULL DEFAULT NULL,
  `modificadoEM` timestamp NULL DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP,
  `clienteStatus` varchar(255) DEFAULT NULL,
  `usuarioNivel` varchar(255) DEFAULT NULL,
  `nome` varchar(255) DEFAULT NULL,
  `email` varchar(255) DEFAULT NULL,
  `senha` varchar(150) DEFAULT NULL,
  `telefone` varchar(20) DEFAULT NULL,

Grato em me ajudar.

Atenciosamente,

Renato

Compartilhar este post


Link para o post
Compartilhar em outros sites

O que você tentou?
Postar sua estrutura pra eu poder fazer pra você sem chance.


De uma olhada de como montar a query com mais de uma tabela!

http://stackoverflow.com/questions/14995000/sql-inner-join-more-than-two-tables

E diga-se de passagem não consegui entender nada nesta estrutura, quais IDs ligam as tabelas etc?, pesquise por foreignkey para criar as chaves e índices.

http://www.w3schools.com/sql/sql_foreignkey.asp


Compartilhar este post


Link para o post
Compartilhar em outros sites

Caro Williams

O que postei, não foi no intuito de você fazer para mim, isso nunca me passou pela a cabeça.

Apenas mostrei algo para que pudesse de mar um ponto de partida.

Grato,

Renato

Compartilhar este post


Link para o post
Compartilhar em outros sites

Caros amigos

Peço SOCORRO.

Por favor, me ajuda nesta parte desta Exibição na tela, pois não estou conseguindo.

Humildemente recorro ao auxílio dos amigos e peço desculpa principalmente ao amigo Williams.

Mas SOCORRO, SOCORRO, SOCORRO.

Por favor.

Atenciosamente,

Renato

Compartilhar este post


Link para o post
Compartilhar em outros sites

Atente-se as Orientações e Regras do Fórum de PHP

Seja paciente, da definição de "ter paciência" e não de enfermo, para ter que "gritar" por socorro.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Caros amigos

 

Com ajuda de uma amigo, consegui resolver o problema.

 

Ficou assim:


function mostraRespostaItens() {

   global $conecta;

   $cliente = '3';
   $cotaNum = '3.3';

   $sql = "SELECT cotacaoItens.cotaNumero, cotacaoItens.codProdClie, cotacaoItens.clienteId, 
		          produto.clienteId, produto.codProdClie, produto.produtoDescr
				FROM produto 
				INNER JOIN cotacaoItens ON cotacaoItens.codProdClie = produto.codProdClie
				Where cotacaoItens.clienteId = '$cliente'
				  AND cotacaoItens.clienteId = produto.clienteId  ";

   $stmt = $conecta->prepare($sql);
   $stmt->execute();

   $num = $stmt->rowCount();

   $prod = null;


   if ($num > 0) {
      while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
         extract($row);

         if ($prod != $codProdClie) {

            if (!is_null($prod)) {
               echo "</table>";
            }
            // Fechando a tabela do último Produto impresso antes de abrir a nova
            echo " <br/>";

            echo "<h2>{$codProdClie} - {$produtoDescr}</h2>";

            echo "<table  border='0' cellpadding='3' cellspacing='2' >";

            mostraRespFornec($codProdClie);
         }
      } //Fecha While



      echo "</table>"; // Fechando a tabela da última categoria do laço
   }
}

function mostraRespFornec($codProdClie) {

   global $conecta;

   $cliente = '3';
   $cotaNum = '3.3';

   $sql = "SELECT cotacaoResposta.cotaRespId, cotacaoResposta.cotaNumero, cotacaoResposta.codProdClie,  cotacaoResposta.cotaRespMarca,
		          cotacaoResposta.cotaOferta, cotacaoResposta.fornecedorId, cotacaoResposta.cotaRespQtde, 
                  cotacaoResposta.cotaRespVlr, cotacaoResposta.cotaRespTotal, cotacaoResposta.cotaItensId,
                  fornecedores.fornecedorId, fornecedores.nome
                              
		FROM fornecedores
            
		INNER JOIN cotacaoResposta ON cotacaoResposta.fornecedorId = fornecedores.fornecedorId
				
                     Where  cotacaoResposta.cotaNumero = '$cotaNum' 
                     AND cotacaoResposta.cotaOferta = '2' 
                     AND cotacaoResposta.codProdClie = $codProdClie
                        
                     ORDER BY cotacaoResposta.cotaRespVlr ASC";


   $result = $conecta->prepare($sql);
   $result->execute();

   $nume = $result->rowCount();

   $forn = null;

   if ($nume > 0) {
      while ($row = $result->fetch($forn)) {
         extract($row);

         if ($forn != $fornecedorId) {

            if (!is_null($forn)) {
               echo "</table>";
            }

            echo "<table>";

            echo "  <tr style='color:#1C1C71; font-variant:small-caps; 
			                                          font:16px Arial, Helvetica, sans-serif; font-weight: bold;'>";
            echo "      <td><div class='fornec'>{$fornecedorId} - {$nome}</div></td>";
            echo "  </tr>";

            echo "  <tr>";
            echo "      <td><div class='no'>Qtde..: {$cotaRespQtde}</div></td>";
            echo "  </tr>";    

            echo "  <td>&nbsp;</td>";

         }

      } //Fecha While

      echo "</table>"; // Fechando a tabela da última categoria do laço
   }
}

 

Grato,

 

Renato

 

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.