Ir para conteúdo

POWERED BY:

Arquivado

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

paulo.chagas

Matriz php + mysql

Recommended Posts

Olá pessoal, preciso de um grande help...

 

Tenho uma string em uma coluna do banco mysql que é a seguinte

 

0.1752, 0.0245, 0.0247, 0.0247, 0.0247, 0.0221, 0.0147, 0.0347, 0.0217, 0.0547, 0.0247, 0.0847, 0.0247, 0.0747, 0.0947, 0.0147

 

São 16 números, separados por virgula, eu preciso fazer uma consulta no banco de dados e converter essa string em uma matriz 4x4 com php, será que tem como?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Para fazer de modo mais simples explode deveria ter um delimitador diferente a cada 4 tipo um "|" dai dava um explode e explode em cada membro do array.

 

Nesse caso vai ter que ser mais manual.

 

$newArray = explode(",", $string)
// aqui você tem o array com os 16 numero 
 
$array[0] = array($newArray[0],$newArray[1],$newArray[2],$newArray[3]);
$array[1] = array($newArray[4],$newArray[5],$newArray[6],$newArray[7]);
$array[2] = array($newArray[8],$newArray[9],$newArray[8],$newArray[9]);
$array[3] = array($newArray[12],$newArray[13],$newArray[14],$newArray[15]);
 

 

Fica BEM feio, mas funciona....

Compartilhar este post


Link para o post
Compartilhar em outros sites

Para fazer de modo mais simples explode deveria ter um delimitador diferente a cada 4 tipo um "|" dai dava um explode e explode em cada membro do array.

 

Nesse caso vai ter que ser mais manual.

 

$newArray = explode(",", $string)
// aqui você tem o array com os 16 numero 
 
$array[0] = array($newArray[0],$newArray[1],$newArray[2],$newArray[3]);
$array[1] = array($newArray[4],$newArray[5],$newArray[6],$newArray[7]);
$array[2] = array($newArray[8],$newArray[9],$newArray[8],$newArray[9]);
$array[3] = array($newArray[12],$newArray[13],$newArray[14],$newArray[15]);
 

 

Fica BEM feio, mas funciona....

 

 

 

Danilo, obrigado pela ajuda, mas eu esqueci de um detalhe muito importante...

 

Eu dei esse exemplo de 4x4, mas existirão outras matrizes com outras dimensões, até 20x20...então teria de ser algo dinâmico

Compartilhar este post


Link para o post
Compartilhar em outros sites

Na verdade a solução sempre sera uma matriz quadrada nxn ou existiriam matrizes de 16x4 ???

 

 

Bem vamos precisar agora de + duas variáveis no minimo...

 

 

$linha = 16; // numero de linhas na matriz
$coluna = 4; // numero do colunas da matriz 

$newArray = explode(",", $string);
for($i=0;$i<$linha;$i++)
{
     for($k=0; $k<$coluna;$k++)
     {
          $array[$i][$k] = $newArray[($i*$coluna) + $k];
     }
}
 

 

Se a matriz for sempre quadrada da pra determinar linha e coluna pelo numero de elementos.

 

Não testei o código mas acho que vai dar certo...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Apenas como observação:MATRIZ e ARRAY não são a mesma coisa.

 

 

Apenas como observação:MATRIZ e ARRAY não são a mesma coisa.

valha pensei que era a mesma coisa :o, qual a diferença ?

 

 

MATRIZ é um conjunto de m x n elementos arranjados em forma de m linhas e n colunas.

 

A localização de um dado elemento, é designada pela sua posição na linha e na coluna ao qual pertence.

 

Uma matriz se diz QUADRADA quando tem o mesmo número de linhas e colunas.

Uma matriz composta de uma só LINHA é denominada VETOR LINHA.

Uma matriz composta de uma só COLUNA é denominada VETOR COLUNA.

 

Adicionalmente, uma matriz pode ser classificada como: IDENTIDADE, DIAGONAL, NULA, TRANSPOSTA, SIMÉTRICA, ANTI-SIMÉTRICA, CONJUGADA, ETC.

( Não vou discorrer sobre cada uma delas, pois isto faz parte de curso especializado )

 

MATRIZES são definidas para o "espaço bidimensional".

Seus elementos são numéricos.

Usam dois índices para cada elemento (i,j) => (linha, coluna) => i e j são os índices do elemento genérico.

 

A álgebra das MATRIZES é importante em vários campos do conhecimento, entre eles, COMPUTAÇÃO, FOTOGRAFIA DIGITAIS.

 

Algumas linguagens de programação apresentam apresentam algoritmos próprios para manipulação direta de MATRIZES.

( C e FORTRAN são exemplos )

 

A php não manipula - diretamente - MATIZES, entretanto, apresenta uma série de funções para trabalho com ARRAYS.

 

ARRAY é um conjunto de m elementos arranjados linearmente, conforme formato especificado,

 

UNIDIMENSIONAL TRADICIONAL, (UNIDIMENSIONAL PADRÃO), onde,

 

ÍNDICES, (INTEGER), POSITIVOS SEQUENCIAIS e

PRIMEIRO ÍNDICE, sempre IGUAL a ZERO.

 

ELEMENTOS, (STRING, INTEGER e/ou FLOAT)

 

$a01 = array ( 2, 8, 18, "OOPS", 123.456 ); // Notação da php 5.4.0-

 

$a01 = [ 2, 8, 18, "OOPS", 123.456 ]; // Notação da php 5.4.0+

 

UNIDIMENSIONAL ASSOCIATIVA, onde,

 

ÍNDICES, (INTEGER e/ou STRING)

PRIMEIRO ÍNDICE, NÃO necessariamente IGUAL a ZERO

SE todos os ÍNDICES forem do tipo INTEGER, não precisarão ser sequenciais

ÍNDICES do tipo FLOAT, serão convertidos para INTEGER.

 

ELEMENTOS, (STRING, INTEGER e/ou FLOAT)

 

a ) ÍNDICES tipo STRING

 

$a02 = array ( "me" => "ed48", "she" => "Norma", "score" => 10 ); // Notação da php 5.4.0-

 

$a02 = [ "me" => "ed48", "she" => "Norma", "score" => 10 ]; // Notação da php 5.4.0+

 

=> é designado como conector ÍNDICE, ELEMENTO.

 

b ) ÍNDICES tipo INTEGER (NEGATIVOS)

 

$a03 = array (-2 => 21.456, -82 => 'Salve, Salve...');

 

$a03 = [ -2 => 21.456, -82 => 'Salve, Salve...' ];

 

c ) ÍNDICES do tipo FLOAT

 

$a04 = array (1.23 => 8, 5.44 => 'Test 1');

 

$a04 = [ 1.23 => 8, 5.44 => 'Test 1' ];

 

MULTIDIMENSIONAL COMUM

 

ÍNDICES, (INTEGER), POSITIVOS SEQUENCIAIS e

PRIMEIRO ÍNDICE, sempre IGUAL a ZERO.

 

ELEMENTOS, (STRING, INTEGER e/ou FLOAT)

PELO MENOS um dos ELEMENTOS deve ser uma ARRAY.

 

$a05 = array ("países", "continentes", array("Brasil", "Portugal"), array("América do Sul", "Europa"));

 

$a05 = ["países", "continentes", ["Brasil", "Portugal"], ["América do Sul", "Europa"]];

 

neste caso,

 

$a05[0] = "países";

$a05[1] = "continentes";

 

$a05[2][0] = "Brasil";

$a05[2][1] = "Portugal";

 

$a05[3][0] = "América do Sul";

$a05[3][1] = "Europa";

 

MULTIDIMENSIONAL ASSOCIATIVA

 

ÍNDICES, (INTEGER e/ou STRING)

PRIMEIRO ÍNDICE, se INTEGER, não mecessáriamente igual a ZERO.

ÍNDICES, se do tipo INTEGER, não precisam ser sequenciais.

Pelo menos dois ÍNDICES com TIPOS DIFERENTES.

Nenhum ÍNDICE pode ser ARRAY.

ÍNDICES do tipo FLOAT, serão convertidos para INTEGER.

 

ELEMENTOS, (STRING) e/ou (INTEGER) e/ou (FLOAT) e/ou ARRAY

PELO MENOS um dos ELEMENTOS deve ser ARRAY.

 

$a06 = ["países" => ["Brasil", "Portugal"], "continentes" => ["América do Sul", "Europa"]];

 

neste caso,

 

$a06['países'][0] = "Brasil";

$a06['países'][1] = "Portugal";

 

$a06['continentes'][0] = "América do Sul";

$a06['continentes'][1] = "Europa";

 

ARRAYS usam o espaço MULTIDIMENSIONAL.

Seus ÍNDICES, também denominados CHAVES, podem ser numéricos ou não.

Cada elemento é localizado por apenas um ÍNDICE, nas ARRAYS UNIDIMENSIONAIS.

Nas ARRAYS MULTIDIMENSIONAIS, cada ELEMENTO, pode ser localizado por um número diferente de ÍNDICES, (CHAVES).

 

As operações disponíveis na php para lidar com ARRAYS são particulares e diferentes das operações algébricas disponíveis para MATRIZES.

 

Em algumas situações, os dados, classificados como MATRICIAIS, podem ser manipulados por ARRAYS, através de uma solução alternativa, (workaround), então, dependente do conhecimento matemático do utilizador.

 

Algumas das funções para tratamento de imagens na php, (gd e imagemagic), usam ARRAYS em operações eminentemente MATRICIAIS, como por exemplo: convolution e affine.

 

A recuperação de dados provenientes de bancos de dados, configura-se como uma ARRAY.

Compartilhar este post


Link para o post
Compartilhar em outros sites

cara demorei um pouco para conseguir fazer o que você queria, mais consegui :p

 

<?php
$string = '0.1752, 0.0245, 0.0247, 0.0247, 0.0247, 0.0221, 0.0147, 0.0347, 0.0217, 0.0547, 0.0247, 0.0847, 0.0247, 0.0747, 0.0947, 0.0147,0.00';
//quebra a string em array
$str_ex = explode(',',$string);
//quantidade de arrays dentro de cada grupo
$col    = 4;
//quantidade de grupos
$count  = ceil(count($str_ex) / $col);

//cria uma nova array.
for($i = 0; $i < $count; $i++):
    $prox = $i * $col;
    $result[$i] = array_slice($str_ex,$prox,$col);
endfor;

//mostra o resultado
echo "<pre>";
print_r($result);
echo "</pre>";
?>

 

se ajudou clica => rep_up.png

e marca como resolvido.

Compartilhar este post


Link para o post
Compartilhar em outros sites

rs veja qual poste resolveu seu problema e marque como resolvido.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá galera, quando postei aqui, era uma duvida na cabeça antes de começar a implementar a tela, mas quando comecei com layout, pegando valores da tela, vi que era mais em baixo a coisa...

 

Bem, vou postar aqui meu código todo, se alguem tiver tempo e puder ajudar, ficarei muito grato.

 

Não se atentem muito ao código todo, acho que o problema só está na função

function Resultado(){...}

do javascript

 

 

Se vcs conseguirem rodar isso, preencham a coluna a ser digitada com valor 1 para os quatro campos

Aí a primeira coluna chamada de "multiplica 1" ficará assim:

1

0.5

0.333

0.25

 

A coluna "multiplica 2" está assim

 

2, 3, 7, 1

3, 6, 9, 4

2, 8, 5, 3

7, 2, 3, 6

 

a multiplicação tem que ser feita da seguinte maneira...

 

(1*2) + (0.5*3) + (0.333*7) + (0.25*1) = resutado
(1*3) + (0.5*6) + (0.333*9) + (0.25*4) = resutado
(1*2) + (0.5*8) + (0.333*5) + (0.25*3) = resutado
(1*7) + (0.5*2) + (0.333*3) + (0.25*6) = resutado

 

 

banco de dados

CREATE TABLE tb_torres
(
   id_torre INT(11) AUTO_INCREMENT PRIMARY KEY,
   codigo_cliente INT(11),
   nome_torre VARCHAR(50),
   AEV_max VARCHAR(50),
   matriz_grande VARCHAR(1000),
   tamanho_matriz INT(3)                
);

insert into tb_torres (codigo_cliente, nome_torre, AEV_max, tamanho_matriz, matriz_grande) values('1', 'torre1', '1', '13', '2, 3, 7, 1');  
insert into tb_torres (codigo_cliente, nome_torre, AEV_max, tamanho_matriz, matriz_grande) values('1', 'torre1', '2', '13', '3, 6, 9, 4');  
insert into tb_torres (codigo_cliente, nome_torre, AEV_max, tamanho_matriz, matriz_grande) values('1', 'torre1', '3', '13', '2, 8, 5, 3');
insert into tb_torres (codigo_cliente, nome_torre, AEV_max, tamanho_matriz, matriz_grande) values('1', 'torre1', '4', '13', '7, 2, 3, 6');

 

 

codigo

<?php

$conexao = mysql_connect("localhost", "login","senha");
$db = mysql_select_db("matriz", $conexao);
mysql_set_charset('utf8',$conexao);

$sql = "select id_torre, codigo_cliente, nome_torre, AEV_max, matriz_grande, tamanho_matriz from tb_torres order by id_torre";
$rs = mysql_query($sql, $conexao);

?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
   <head>
       <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
       <title>Calculo matriz</title>

       <script type="text/javascript">
           function Calcula(id_torre){
               var f1 = document.form1;
               var valor_digitado = document.getElementById('valor_digitado_' + id_torre).value; //retorna o valor digitado
               var AEV_max = document.getElementById('AEV_max_' + id_torre).value; //retorna o AEV_max      
               eval('document.form1.fracao_' + id_torre).value = valor_digitado / AEV_max; //faz o calculo da fração

               var fracao = document.getElementById('fracao_' + id_torre).value; //valor da fracao

               document.getElementById('fracao_recebe_' + id_torre).value = document.getElementById('fracao_' + id_torre).value; //valor campo hidden da fracao

               Resultado();

           }


           function Resultado(){
               var coluna_fracao = document.getElementsByName('fracao');
               for(i=0;i<coluna_fracao.length;i++){
                   var cf = coluna_fracao[i];
                   alert(cf.value);
               }

               var matriz_grande = document.getElementsByName('matriz_grande');
               for(i=0;i<matriz_grande.length;i++){
                   var mg = matriz_grande[i];
                   alert(mg.value);
                   transforma=mg.value.split(",");
               }
           }        

       </script>

       <style type="text/css">
           body {
               background-color: #999999;
           }
           body,td,th {
               font-family: Verdana, Arial, Helvetica, sans-serif;
               font-size: 12px;
           }
           .style3 {font-size: 36px; font-weight: bold; }

           .redimensionar_imagem{
                display: block;
                margin-left: auto;
                margin-right: auto;
                height: 500px;
                width: 220px;
            }

       </style>

   </head>
   <form name="form1" action="torres.php" method="post">
       <body>
           <table width="70%" align="center" bgcolor="FFFFFF">
               <tr>
                   <td>
                       <img src="" width="200" height="75" style="padding-left: 15px" />
                   </td>
                   <td>Formulário de XXX XXX XXX XXX XXX </td>
               </tr>
               <tr>
                   <td style="padding-left: 15px"><b>Código do Cliente:</b> <?php echo "23455";?></td>
                   <td style="padding-right: 80px"><b>Selecione o Código da Obra:</b>
                       <select>
                           <option value="">Selecione um Código...
                           <option>233</option>
                           <option>935</option>
                           <option>333</option>
                       </select>
                   </td>
               </tr>

               <tr>
                   <td style="padding-left: 15px"><b>Nome do Cliente:</b> <?php echo "Seccional";?></td>  
                   <td><b>Selecione o Site:</b>
                       <select>
                           <option value="">Selecione um Site...
                           <option>Site 1</option>
                           <option>Site 2</option>
                           <option>Site 3</option>
                       </select>
                   </td>
               </tr>
              </table>

           <table width="70%" align="center" bgcolor="FFFFFF" style="padding-left: 12px">
               <tr>
                   <td width="20%">
                       <table align="left" height="570" width="250">
                           <tr>
                               <td bgcolor="#CCCCCC" align="center">
                                   <img src="" class="redimensionar_imagem"/>
                               </td>
                           </tr>
                       </table>
                   </td>
                   <td width="20%" align="left">
                       <table align="left">
                           <tr height="40">
                               <td width="35%" style="text-align: center;" bgcolor="#CCCCCC"><b>Altura máxima m²</b></td>
                               <td width="50%" style="text-align: center;" bgcolor="#CCCCCC"><b>Digitar aqui</b></td>
                               <td width="50%" style="text-align: center;" bgcolor="#CCCCCC"><b>multiplica 1</b></td>
                               <td width="50%" style="text-align: center;" bgcolor="#CCCCCC"><b>multiplica 2</b></td>
                               <td width="50%" style="text-align: center;" bgcolor="#CCCCCC"><b>Resultado nessa coluna</b></td>
                           </tr>

                           <?php

                           while ($reg = mysql_fetch_array($rs)){
                               $id_torre = $reg['id_torre'];
                               $codigo_cliente = $reg['codigo_cliente'];
                               $nome_torre = $reg['nome_torre'];
                               $AEV_max = $reg['AEV_max'];
                               $matriz_grande = $reg['matriz_grande'];
                               $tamanho_matriz = $reg['tamanho_matriz'];

                           ?>
                               <tr>
                                   <td><input type="text" size="20%" style="text-align: right; border: 0;" readonly="readonly" id="AEV_max_<?php print $id_torre?>" value="<?php print $AEV_max?>"></input></td>

                                   <td width="50%" style="text-align: center;">
                                       <input type="text" size="25%" onkeyup="Calcula('<?php print $id_torre?>')" id="valor_digitado_<?php print $id_torre ?>"  onclick="javascript:if(this.value==0){this.value='';}" onblur="javascript:if (this.value=='') {this.value='0'} mudar_cor_out(this);" value="0" style="text-align: center">
                                   </td>


                                   <!-- HIDDEN COM O VALOR DA FRAÇÃO -->
                                   <input type="hidden" id="fracao_<?php print $id_torre ?>" name="fracao_<?php print $id_torre ?>" value="0" readonly="readonly" size="10"></input>
                                   <td><input type="text" id="fracao_recebe_<?php print $id_torre?>" name="fracao" size="5" value="0" ></input></td>
                                   <!-- HIDDEN COM O VALOR DA FRAÇÃO -->

                                   <!-- CAMPOS MATRIZ GRANDE -->
                                   <td><input type="text" size="20%" style="text-align: right; border: 0;" readonly="readonly" name="matriz_grande" id="matriz_grande_<?php print $id_torre?>" value="<?php print $matriz_grande?>"></input></td>
                                   <!-- CAMPOS MATRIZ GRANDE -->

                                   <!-- CAMPOS QUE RECEBE O RESULTADO DA MULTIPLICACAO -->
                                   <td><input type="text" name="resultado" size="5" value="0" ></input></td>
                                   <!-- CAMPOS QUE RECEBE O RESULTADO DA MULTIPLICACAO -->


                               </tr>
                           <?php
                           }
                           ?>


                       </table>
                   </td>
                   <td width="20%">
                       <table bgcolor="#CCCCCC" align="center" height="130" width="250">
                           <tr>
                               <td align="center" valign="top" style="font-size: 30px;">Resumo
                                   <img src="images/aprovado.png" width="32" height="32"/>
                               </td>
                           </tr>
                           <tr>
                               <td valign="top"><b>Cliente:</b> <?php echo "teste";?></td>
                           </tr>
                           <tr>
                               <td valign="top"><b>Status:</b> <?php echo "Aprovado";?></td>
                           </tr>
                           <tr>
                               <td>
                                   <b>Análise:</b> 
                                   <input type="button" value="Enviar">
                               </td>
                           </tr>    
                       </table>



                       <table align="center" height="440" width="250">
                           <tr>
                               <td></td>
                           </tr>
                       </table>
                   </td>
               </tr>
               <tr>
                   <table>
                       <table align="center">
                           <tr>
                               <!-- <td colspan="2" valign="middle" bgcolor="#CCCCCC"><img src="images/env.jpg" width="76" height="31" /></td> -->
                               <td><input type="submit" value="Calcular" style="cursor: pointer" > </td>
                           </tr>
                       </table>
                   </table>
               </tr>
           </table>
       </body>
   </form>    
</html>

Compartilhar este post


Link para o post
Compartilhar em outros sites

cara eu nem vou ver esse código que você postou ai, nos estamos aqui e para ajudar, e não fazer seu trabalho

o post que coloquei #8, tinha resolvido seu problema, ate mesmo ja estava marcado como tal.

 

ai depois você vem com outro problema.

veja onde esta o erro em seu sistema, e abra outro post com o novo problema, por esta já foi resolvido.

Compartilhar este post


Link para o post
Compartilhar em outros sites

cara eu nem vou ver esse código que você postou ai, nos estamos aqui e para ajudar, e não fazer seu trabalho

o post que coloquei #8, tinha resolvido seu problema, ate mesmo ja estava marcado como tal.

 

ai depois você vem com outro problema.

veja onde esta o erro em seu sistema, e abra outro post com o novo problema, por esta já foi resolvido.

 

Não quero que ninguém faça meu trabalho, apenas não tem como eu postar uma função e tentar resolver com a ajuda de vcs!! Preciso dos id's dos registros do banco, não tem como eu resolver postando apenas um pedaço de função javascript

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não quero que ninguém faça meu trabalho, apenas não tem como eu postar uma função e tentar resolver com a ajuda de vcs!! Preciso dos id's dos registros do banco, não tem como eu resolver postando apenas um pedaço de função javascript

 

 

esse post já foi resolvido, abra um outro post com sua nova duvida.

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.