Ir para conteúdo

Arquivado

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

montano

[Resolvido] retornando array por REQUEST

Recommended Posts

boa tarde galera,

 

Como eu posso criar um array tipo assim:

 

$produto[cod][nome];
para incluir algo nesse array posso usar array_push?

e depois enviar por REQUEST é possivel?

 

Depois ler ele em um foreach pegando o codigo e o nome do produto?

 

obrigado pela ajuda

Compartilhar este post


Link para o post
Compartilhar em outros sites

function options($modulo){
    	
    	switch ($modulo){
    		
    		case ('Pme'):
    		$produto['cod']['nome'] = array();
    		$result = $this->select('produtos','*',' ORDER by produto ASC');
    		while (mysqli_fetch_assoc($result)){
    			$produto[$row['cod']][$row['produto']][self::$ponteiro]; 
    			self::$ponteiro++;
    		}
    		$this->close();
    		$_REQUEST['produtos'] = $produto;
    		break;   		
    		
    	}
    }

Tentei assim

Compartilhar este post


Link para o post
Compartilhar em outros sites

Como eu posso criar um array tipo assim:

 

$produto[cod][nome];
para incluir algo nesse array posso usar array_push?

 

As funções de trabalho com matrizes no PHP permitem tanto o trabalho como pilha (FILO) e como fila (FIFO):

 

Tabalhando como pilha: (First In Last Out)

$filo = array();

$filo[] = '1';
$filo[] = '2';
$filo[] = '3';
$filo[] = '4';
$filo[] = '5';

while ( count( $filo ) ) var_dump( array_pop( $filo ) );

A saída será:

string(1) "5"

string(1) "4"

string(1) "3"

string(1) "2"

string(1) "1"

 

Trabalhando como fila (First In First Out)

$fifo = array();

$fifo[] = '1';
$fifo[] = '2';
$fifo[] = '3';
$fifo[] = '4';
$fifo[] = '5';

while ( count( $fifo ) ) var_dump( array_shift( $fifo ) );

A saída será:

string(1) "1"

string(1) "2"

string(1) "3"

string(1) "4"

string(1) "5"

 

e depois enviar por REQUEST é possivel?

 

Depois ler ele em um foreach pegando o codigo e o nome do produto?

 

A grande confusão está aqui, você não envia por REQUEST, $_GET e $_POST são formas de se recuperar os dados enviados pelo usuário via HTTP:

 

Se você fizer seu formulário e definir no atributo method o valor post, você recuperará esses dados na sua aplicação PHP utilizando $_POST:

echo $_POST[ 'valor' ];

Da mesma forma, o $_GET é utilizado se o atributo method for definido como get:

echo $_GET[ 'valor' ]

Quando não importa o método que foi utilizado para enviar os dados você pode utilizar $_REQUEST:

echo $_REQUEST[ 'valor' ];

Dessa forma, se o usuário enviar os dados via GET ou via POST, sua aplicação irá conseguir recuperar esses dados.

 

Agora, pelo que pude entender no seu código, você não está utilizando um formulário e como também não acredito que você vá trafegar esses dados via HTTP, talvez seja interessante você dizer o que está tentando fazer para que possamos lhe indicar um caminho.

 

;)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Desculpe se nao me expliquei bem e obrigado pela atenção, parabens pelas respostas sempre bem respondidas.

 

Seguinte:

 

Eu estou trabalhando com MVC, o meu VIEW esta somente recebendo valores, ele nao manipula nada.

 

meu codigo seria assim:

 

controller

                require_once ('../../app/model/action/' . $acao . '.php');
                $acao = new $acao;
                $acao->execute($this->modulo);
// Digamos que a ação seja 'SelectOption' isso vai me retorna por exemplo todos meus produtos cadastrados no meu BD para dentro de um select option, porem preciso pegar o nome do produto e seu codigo, para poder usalo como FK no formulario.

ACTION -> SelectOption

    public function execute($modulo)
    {
                require_once('/home/insidete/app/model/dao/SelectOptionDao.php');
                $selectOption = new SelectOptionDao();
                $selectOption->execute($modulo);
    }
// Aqui eu vou solicitar para o meu DAO oque eu preciso, estou mandando como parametro o modulo 'seria a pagina view que esta solicitando',

 

DAO ->SelectOptionDao

    function execute($modulo)
    {

        switch ($modulo)
        {

            case ('Pme'):
                // PRODUTOS
                $produto['cod']['nome'] = array(); // Nao sei se é assim que se fa :S
                $result = $this->select('produtos', '*', ' ORDER by produto ASC');
                while (mysqli_fetch_assoc($result))
                {
                    $produto[$row['cod']][$row['produto']][self::$ponteiro];
                    self::$ponteiro++;
                }
                $this->close();
                $_REQUEST['produtos'] = $produto;
                break;

        }
    }
// É aqui que eu quero pegar os dados do BD e inserir eles em um array, porem tenho que por codigo e nome do produto dentro do mesmo array, você vera na VIEW o porque disso

 

VIEW -> Pme.php (esse é o modulo)

<b>Produto: </b><select name="produto"/>
<option></option>
<?php
foreach ($_REQUEST['produtos'] as $produto){  // Aqui eu nao sei como receber meu array lendo codigo e produto
	echo "<option value='" . $codproduto . "'>" . $nomeproduto . '</option>';
}
?>
</select>

A ideia é essa, minha VIEW tem só que pegar esse valor, ela nao tem contato com o DAO.

Por isso estou enviando por $_REQUEST;

Compartilhar este post


Link para o post
Compartilhar em outros sites

 function execute($modulo)
    {       
        switch ($modulo)
        {
            case ('Pme'):
                // PRODUTOS
                $produto['cod']['produto'] = array();
                $result = $this->select('produtos', '*', ' ORDER by produto ASC');
                while ($row = mysqli_fetch_assoc($result))
                {
                    $produto['cod'][self::$ponteiro] = $row['cod'];
                    $produto['produto'][self::$ponteiro] = $row['produto'];
                    self::$ponteiro++;
                }
                $this->close();          
                $_REQUEST['produtos'] = $produto;                
                break;

        }
    }

Assim esta incluindo, como eu faço para ler dentro de um mesmo foreach o cod e o produto? para implementar no meu select option.

Existe uma forma de incluir cod e produto ao mesmo tempo ao invez de fazer em 2 linhas?

                   $produto['cod'][self::$ponteiro] = $row['cod'];
                    $produto['produto'][self::$ponteiro] = $row['produto'];

Compartilhar este post


Link para o post
Compartilhar em outros sites

Assim esta incluindo, como eu faço para ler dentro de um mesmo foreach o cod e o produto? para implementar no meu select option.

Existe uma forma de incluir cod e produto ao mesmo tempo ao invez de fazer em 2 linhas?

 $produto['cod'][self::$ponteiro] = $row['cod'];
 $produto['produto'][self::$ponteiro] = $row['produto'];

Provavelmente sim, mas de um var_dump( $produto ) e coloque aqui o resultado, ai fica mais fácil dizer se sim ou se não.

 

var_dump( $produto );

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom esta resolvido,

 

Usei meu BEAN pra cadastramento de produto EX:

 

<?php
class Produto
{
    private $cod;
    private $produto;

    //SET´s
    function setCod($cod)
    {
        $this->cod = $cod;
    }
    function setProduto($produto)
    {
        $this->produto = $produto;
    }
    
    // GET´S
    function getCod($cod)
    {
        return $this->cod;
    }
    function getProduto($produto)
    {
        return $this->produto;
    }
}
?>
[/code


Minha DAO fico assim

[code]
<?php
    function execute($modulo)
    {
        switch ($modulo)
        {
            case ('Pme'):
                // PRODUTOS
                $produtos = array();
                $result = $this->select('produtos', '*', ' ORDER by produto ASC');
                //BEAN
                require_once ('/home/insidete/app/model/bean/Produto.php');
                while ($row = mysqli_fetch_assoc($result))
                {
                    $produtos[self::$ponteiro] = new Produto();
                    $produtos[self::$ponteiro]->setProduto($row['produto']);
                    $produtos[self::$ponteiro]->setCod($row['cod']);
                    self::$ponteiro++;
                }

                $this->close();
                return $lista;

        }
    }

?>
[/code]

Minha DAO faz o select e cria um objeto para cada $row, eu faço o encapsulamento deles no BEAN, e depois retorno para minha VIEW o array onde vai estar meus objetos. la na view eu faço isso:


  [code]              foreach ($produtos as $produto){
                	$produto->getCod();
                        $produto->getProduto();
}

 

 

Bom aceito mais sugestoes , espero que ajude mais pessoas. abraços

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.