Ir para conteúdo

POWERED BY:

Arquivado

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

Henrique Buzin

Select MySqli

Recommended Posts

Olá galera! estou com um problema em exibir a quantidade de cada produto do email "n" tem, tenho um banco de dados frutas que tem id_fruta produto nome id_estado quantidade_total e preco, e ainda tenho um reservas que tem id_reserva email nome fruta, e nesse fruta tem assim: 5; 6; 0 e eu explodi esses para ficarem 5 6 0, mas na hora de exibir eles ficam assim:

14464818184_a6960058b9_b.jpg o código está abaixo. Agradeço desde já.

<?php
    $query = "SELECT frutas.produto, frutas.nome, frutas.id_estado, frutas.preco, reservas.frutas, reservas.email FROM reservas,frutas GROUP BY produto ORDER BY email";
    $result = $mysqli->query($query);
    $i = 0;
?>
<?php while($row = $result->fetch_array(MYSQLI_ASSOC)){ ?>
    <fieldset>
        <legend><h3><?php echo $row['email']; ?></h3></legend>
        <h7>FRUTAS</7>
        <table border="1" cellspacing="0">
           <thead>
                 <tr>
                        <th>Produto</th>
                         <th>Nome</th>
                         <th>Estado</th>
                          <th>Preço</th>
                          <th>Quantidade</th>
                  </tr>
           </thead>
           <tbody>
                 <tr>
                        <td><?php echo $row['produto']; ?></td>
                        <td><?php echo $row['nome']; ?></td>
                        <td><?php echo $row['id_estado']; ?></td>
                        <td><?php echo $row['preco']; ?></td>
                        <?php $frutas = explode("; ",$row['frutas']);?>
                        <td><?php echo $frutas[$i]; ?></td>
                 </tr>
            </tbody>
        </table>
    </fieldset>
<?php $i++; } ?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá, Henrique. Troque o código

<?php $frutas = explode("; ",$row['frutas']);?>

por

<?php
echo $row['frutas'];
$frutas = explode("; ",$row['frutas']);
?>

Depois, poste o que está sendo ecoado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ou seja, parece q o problema está no banco de dados. Tem certeza q o campo "frutas" tem os valores 5, 6 e 0 para os 3 registros da tabela reservas?

Compartilhar este post


Link para o post
Compartilhar em outros sites

eu fiz assim quando reserva vem um post que eu acesso tipo assim $_POST['q1'][0] e ele tem 5 1 (neste caso, mas pode ter qualquer número até 5) mas eu salvei no banco de dados assim 5; 1 entao queria que esses se tornariam um array de novo com o explode ai fica 5 1 e eu exibia esses assim na tabela mas não ta funcionando.


Quando faço isto aparece apenas uma tabela igual queria, mas só aperece a primeira linha do produto.

$query = "SELECT frutas.produto, frutas.nome, frutas.id_estado, frutas.preco, reservas.frutas, reservas.email FROM reservas,frutas GROUP BY email";


Nesse ali tem 1 registro mas tem 3 produtos ai ele se multiplica e ai sim ele troca o nome do produto e coloca a quantidade


Queria que tudo se unisse uma tabela (html) para 1 registro


tipo assim:

14280329569_6bc1bacd65_b.jpg

 

Obrigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não entendi seu último post. Você poderia explicar melhor? Se o q vc quer é exibir os valores 5, 6 e 0 para a coluna Quantidade nas linhas da tabela q vc mostrou, vc tem q salvar esses valores no seu banco de dados. Ele mostra 5 e 1 pq no banco de dados está assim.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ok vou explicar melhor é que esses números vêem de um fromulário com um select

 

Quando envia eu pego todos os posts das frutas e faço assim: 4; 6; 3 (todos eles) e salvo depois eu queria exibir a quantidade de frutas tal ai tava fazendo um select no frutas e no reservas ai montei a tabela com os campos do frutas e fiz um explode no unico campo do reserva da tabela o frutas que ficou 4 6 3 e queria que aparece-se assim:

xyz

produto quantidade

tomate 4

uva 6

laranja 3

 

mas ele aparece assim:

xyz

produto quantidade

tomate 4

 

xyz

produto quantidade

uva 6

 

xyz

produto quantidade

laranja 3


form:

14487213093_b90c69afd1_b.jpg

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom, esse parece ser um outro problema, certo? Deixa ver se eu entendi...vc tem um select dentro de um formulário onde vc seleciona várias frutas. Quando o formulário é enviado, vc pega os índices das frutas escolhidas no select. Então, vc salva essas frutas no campo frutas da tabela reservas. Depois, vc pega as frutas dessa tabela reservas, q estão separadas por ";", dá um explode nelas e aí tenta buscar o nome das frutas e ele não lista todos os registros sem repetições.

Se eu entendi bem, a tabela agora apresenta um novo problema. Poderia exibi-la novamente? E, se vc modificou o código denovo, tb poste aqui.

Compartilhar este post


Link para o post
Compartilhar em outros sites

14487460723_122db355ea_b.jpg


Testando aqui com o order e o group ele não estava pegando os outros registros então coloquei a query assim:

 

    $query = "SELECT frutas.produto, frutas.nome, frutas.id_estado, frutas.preco, reservas.frutas, reservas.email FROM reservas,frutas";

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara, substitua o trecho

<?php while($row = $result->fetch_array(MYSQLI_ASSOC)){ ?>

por esse

<?php while($row = $result->fetch_array(MYSQLI_ASSOC)){
var_dump( $row );?>

Depois, poste o q foi mostrado e tb seria bom mostrar o código do arquivo onde vc recebe os dados do formulário e os insere no banco de dados.

Compartilhar este post


Link para o post
Compartilhar em outros sites

ok

este é o gerado:

14473926202_8fa0ec594d_b.jpg

este é o código certo:

14474072654_7f5ff8731f_b.jpg

este é o código em texto:

 

<?php
include "con_db.php";
$mysqli = bd::Mysqli(FALSE);
if(!$mysqli->set_charset("utf8")){
     echo "Error ao selecionar a codificação";
}
?>
<?php
if(!empty($_POST)){
 
$query = "INSERT INTO reservas (nome, email, frutas, hortalicas, legumes, vegetais) values (?, ?, ?, ?, ?, ?)";
$sql = $mysqli->prepare($query);
$sql->bind_param('ssssss', $nome, $email, $cFrutas, $cHortalicas, $cLegumes, $cVegetais);  
$nome = $_POST['nome'];
$email = $_POST['email'];
$frutas = array_values($_POST["q1"]);
$cFrutas = implode("; ",$frutas);
$hortalicas = array_values($_POST["q2"]);
$cHortalicas = implode("; ",$hortalicas);
$legumes = array_values($_POST["q3"]);
$cLegumes = implode("; ",$legumes);
$vegetais = array_values($_POST["q4"]);
$cVegetais = implode("; ",$vegetais);
if($sql->execute()){
header("Location: index.php");
}else{ 
echo "Erro ao reservar..." . $mysqli->error;
}
}
$sql->close();
$mysqli->close();
?>

Obrigado.

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.