PHP, marking checkbox for printing

Asked

Viewed 159 times

1

I’m in the following situation, and I was wondering if you could help me.

I have a page where I mark checkbox and send to the printing page.

But I’m not getting the loop, for the code to see each id at a time, and generate the little wallets, and bring the info each time he does the loop.

Follows the code:

Page that sends the checkbox marked.

<?php
    require_once('conexao.php');

//Recupera a pesquisa feita
$pesquisa   = mysqli_real_escape_string($conexao,$_POST['palavra']);
//Recupera oque foi selecionado
$campo      = mysqli_real_escape_string($conexao,$_POST['campo']);

//Cria a SQL para fazer a consulta no banco, e onde se poe o nome do campo, trocamos pela váriavel '$campo'
/*Exemplo: se for selecionado o campo titulo, então ele pequisa na tabela no campo titulo,
se for selecionado o campo categoria ele faz a pesquisa no campo categoria da tabela*/
$sql = "SELECT * FROM igreja_fieis WHERE $campo LIKE '%$pesquisa%' and id_ativo=2 order by nome asc";

//Excuta a SQL
$query      = mysqli_query($conexao,$sql) or die("Erro ao Pesquisar");

//Se não for encontrado nada, então diz: 'Nada Encontrado...', se não retorna o resultado
if(mysqli_num_rows($query) <= 0){
    echo 'Nada Encontrado...';
}else{
    //Como é retornado um array, então precisamos colocar novamente a váriavel '$campo' onde colocamos a nome do campo a ser exibido

        ?>           
      <form name="form_lote" id="select" method="post" action="membros_cartao_lote.php">
 <table class="table">
<tr align="center" class="active">
    <td><h4>Varias Imp.</h4></td>
    <td><h4>ID</h4></td>
    <td><h4>Nome</h4></td>
    <td><h4>Telefone</h4></td>
    <td><h4>CPF</h4></td>
    <td></td>
    <td></td>
    <td></td>
    <td></td>
    <td>
        <input type="submit" class="btn btn-success" value="imprimir Selecionados" >            
 </td>
</tr>
<?php 
while($res = mysqli_fetch_assoc($query)){ ?>
<tr>
    <td><input type="checkbox" name='imp_lote[]' value="<?=$res['id']?>"></form></td>
    <td><?= $res['id'] ?></p></td>
    <td width="35%"><p><?= $res['nome'] ?></p></td>
    <td width="13%"><?= $res['fone'] ?></td>
    <td width="12%"><?= $res['cpf'] ?></td>
    <td>
    <ul>
    <form name="altera1" action="membros_alt.php" method="get">
        <input type="hidden" name="id" value="<?=$res['id']?>">
        <button class="btn btn-success btn-xs">Alterar</button>
    </form>
    </td><!--
    <td>
        <form name="deletar" action="membros_deleta.php" method="post" >
            <input type="hidden" name="id" value="<?=$res['id']?>">
            <button class="btn btn-danger btn-xs"> Remover </button>
        </form>
     </td>-->
     <td>
        <form name="ver" action="membros_ver.php" method="post">
            <input type="hidden" name="id" value="<?=$res['id']?>">
            <button class="btn btn-default btn-xs" role="button">Ver</button>
        </form>
    </td>
     <td>
     <form name="cartao_unitario" action="membros_cartao.php" method="post">
            <input type="hidden" name="id" value="<?=$res['id']?>" >
            <button class="btn btn-info btn-xs" role="button" >Cartão Membro</button>
        </form>
     </td>
    <td>
        <form name="foto" action="foto_cadastro.php" method="post">
            <input type="hidden" name="id" value="<?=$res['id']?>" >
            <button class="btn btn-warning btn-xs" role="button" >Foto </button>
        </form>        
    </td>
    <td align="center">
    </ul>
    </td>

Now the page that receives the information, which is where the problem lies.

<?php 
$id = $_POST['imp_lote'];
$ids = implode(',', $id);
echo $ids;
var_dump ($ids);

$ver = membros_ver($conexao, $ids);
        foreach($ver as $vermembros) {
?>              
<table width="900" border="0" height="272" cellpadding="0" cellspacing="0" >
  <tr>
    <td width="450" height="272" valign="top" >
      <table width="450" height="272" border="0" style="border: 2px solid #004A84;">
        <tr style="text-align: center">
          <td height="80" colspan="4"><img src='imagens/cabecalho_cartao_membro2.gif' width='406' height='80' /></td>
        </tr>
        <tr>
          <td height="18" colspan="4"><div align='center' class='style1'>
                              <div align='center' class='style4 style5'>Cartão de Membro</div>
                              </div></td>
        </tr>
        <tr>
          <td width="50" height="21">Nome:</td>
          <td colspan="3" height="21"><?=$vermembros['nome'];?></td>
        </tr>
        <tr>
          <td height="18">Filiação:</td>
          <td colspan="2" height="18"><?=$vermembros['pai'];?></td>
          <td width="83" rowspan="6">&nbsp;</td>
        </tr>
        <tr>
          <td height="18">&nbsp;</td>
          <td colspan="2" height="18"><?=$vermembros['mae'];?></td>
        </tr>
        <tr>
          <td>&nbsp;</td>
          <td width="148" align="center" style="text-align: center">
           <?php
                $data = $vermembros['datanascimento'];
                $dataP = explode('-', $data);
                $datanascimento = $dataP[2].'/'.$dataP[1].'/'.$dataP[0];
                echo $datanascimento; 
            ?>
          </td>
          <td width="147" align="center" style="text-align: center"><?=$vermembros['est_civil'];?></td>
        </tr>
        <tr>
          <td height="18">&nbsp;</td>
          <td valign="top" style="text-align: center"><img src='imagens/cartao_membro_data_nascimento.gif' width='143' height='13' /></td>
          <td valign="top" style="text-align: center"><img src='imagens/cartao_membro_estado_civil.gif' width='143' height='12' /></td>
        </tr>
        <tr>
          <td height="18">&nbsp;</td>
          <td colspan="2" style="text-align: center"><div align='center'><?=$vermembros['natural_nome'];?>-<?=$vermembros['natural_estado'];?></div></td>
        </tr>
        <tr>
          <td height="18">&nbsp;</td>
          <td colspan="2" align="center" valign="top" style="text-align: center"><img src='imagens/cartao_membro_naturalidade.gif' width='143' height='12' /></td>
        </tr>
      </table>
    <!--lado esquerdo--></td>
    <td valign="top" >&nbsp;&nbsp;
    </td>
    <td width="450" height="276" valign="top">
    <!--lado direito-->
    <table width="450" border="0" height="273" style="border: 2px solid #004A84; font-family: Segoe, 'Segoe UI', 'DejaVu Sans', 'Trebuchet MS', Verdana, sans-serif;">
    <tr>
      <td height="62" colspan="3" style="text-align: center" >
        <table width="317" border="0">
          <tr>
            <td width="154" align="center">
            <?php
                $data = $vermembros['batismo_data'];
                $dataP = explode('-', $data);
                $batismo_data = $dataP[2].'/'.$dataP[1].'/'.$dataP[0];
                echo $batismo_data; 
            ?>
            </td>
            <td width="153" align="center">
             <?php
                $data = $vermembros['membro_desde'];
                $dataP = explode('-', $data);
                $membro_desde = $dataP[2].'/'.$dataP[1].'/'.$dataP[0];
                echo $membro_desde; 
            ?>
            </td>
          </tr>
          <tr>
            <td height="22" valign="top" align="center"><img src='imagens/cartao_membro_data_batismo.gif' width='127' height='13' /></td>
            <td valign="top" align="center"><img src='imagens/cartao_membro_membro_desde.gif' width='143' height='27' /></td>
          </tr>
        </table>
      </td>
      <td width="104">&nbsp;</td>
    </tr>
    <tr>
      <td height="70" colspan="3" style="text-align: center">Dourados,MS,
        <?=$date1?>
        /
        <?=$date2?>
        /
        <?=$date3?>
        </td>
      <td width="104">&nbsp;</td>
    </tr>
    <tr>
      <td height="57" colspan="3" align="center" valign="bottom" style="text-align: center"><img src='imagens/cartao_membro_nome_pastor.gif' width='215' height='33' /></td>
      <td width="104">&nbsp;</td>
    </tr>
    <tr>
      <td height="52" colspan="3" align="center" valign="bottom" style="text-align: center">Terá Validade com selo da Igreja</td>
      <td width="104"><img src='imagens/cartao_membro_quadros.gif' width='109' height='68' /></td>
    </tr>
    </table>
    </td>
  </tr>
</table>
        <?PHP
        }
    ?>
<br>
<hr>    

<!-- termina aqui -->  
</body>
</html>

as requested by the friend, follows the function membros_ver() which foreach to be the variable $vermembros.

<?PHP function membros_ver($conexao, $ids){
    $query = "select m.*, 
    sexo.sexo, 
    nac.nome as nac_nome, 
    civil.nome as est_civil,
    cong_atual.nome as cong_atual_nome,
    c_cre.nome as conj_crente,
    memb_cong.nome as memb_cong_nome,
    form_rec.nome as form_rec_nome,
    ativo.nome as ativo_nome,
    cidades.nome as natural_nome,
    cidades2.nome as cidade,
    est.nome as estado,
    est_nat.sigla as natural_estado
    from igreja_fieis as m 
    left join igreja_sexo as sexo on sexo.id = m.sexo_id 
    left join igreja_nacion as nac on nac.id = m.nacionalidade
    left join igreja_estadocivil as civil on civil.id = m.est_crente
    left join igreja_congregacoes as cong_atual on cong_atual.id = m.onde_congrega_atual
    left join confirma as c_cre on c_cre.id = m.c_crente
    left join igreja_c_memb_cong as memb_cong on memb_cong.id = m.c_memb_cong
    left join igreja_forma_rec as form_rec on form_rec.id = m.forma_recebido
    left join igreja_a_i as ativo on ativo.id = m.id_ativo
    left join cidades on cidades.id = m.naturalidade
    left join cidades as cidades2 on cidades2.id = m.cidade
    left join estados as est on est.id = m.estado
    left join estados as est_nat on est_nat.id = m.natural_est

    where m.id = {$ids}";
    $resultado = mysqli_query($conexao, $query);
    return mysqli_fetch_assoc($resultado);

}
?>
  • in a way thank you for the fixes Mr. DVD, but pq everyone, erases my good day, it costs nothing to be kind to whom can help me. thank you

  • And this function.. membros_ver().. you could post it?

  • yeah, I’ll post

  • You could put that code print_r($ver); before the foreach($ver as $vermembros) ... and post the return of the array just so I have more accuracy in the answer.

  • Friend print_r($ver); did not return anything, but var_dump, returns this: string(3) "3,2", which is the two checkbox I marked.

  • OK! I know the problem.

Show 1 more comment

1 answer

1


The function membros_ver() does not return an array. The function returns a string. That is why you cannot use the foreach correctly.

My suggestion:

Use the mysqli_fetch_array.

In the function you do as follows:

<?PHP function membros_ver($conexao, $ids){

// os ids são lançados com ",". 
// Então é necessário fazer essa edição para que a procedure funcione corretamente
if(strstr($ids, ",")){
    $stringWHERE = "WHERE ";
    $id = explode(",",$ids);
    for($x = 0; $x < count($id); $x++){
        $stringWHERE .= "m.id = ".$id[$x]." OR ";
    }
    $stringFinal = substr($stringWHERE, 0, -3);
} else {
    $stringFinal = "WHERE m.id = ".$ids;
}

$query = "select m.*, 
sexo.sexo, 
nac.nome as nac_nome, 
civil.nome as est_civil,
cong_atual.nome as cong_atual_nome,
c_cre.nome as conj_crente,
memb_cong.nome as memb_cong_nome,
form_rec.nome as form_rec_nome,
ativo.nome as ativo_nome,
cidades.nome as natural_nome,
cidades2.nome as cidade,
est.nome as estado,
est_nat.sigla as natural_estado
from igreja_fieis as m 
left join igreja_sexo as sexo on sexo.id = m.sexo_id 
left join igreja_nacion as nac on nac.id = m.nacionalidade
left join igreja_estadocivil as civil on civil.id = m.est_crente
left join igreja_congregacoes as cong_atual on cong_atual.id = m.onde_congrega_atual
left join confirma as c_cre on c_cre.id = m.c_crente
left join igreja_c_memb_cong as memb_cong on memb_cong.id = m.c_memb_cong
left join igreja_forma_rec as form_rec on form_rec.id = m.forma_recebido
left join igreja_a_i as ativo on ativo.id = m.id_ativo
left join cidades on cidades.id = m.naturalidade
left join cidades as cidades2 on cidades2.id = m.cidade
left join estados as est on est.id = m.estado
left join estados as est_nat on est_nat.id = m.natural_est

".$stringFinal;
    $resultado = mysqli_query($conexao, $query) or die(mysqli_error($conexao));
    return $resultado; 

Then you use the array:

        $ver = membros_ver($conexao, $ids);
        while($vermembros = mysqli_fetch_array($ver)){
?> 

Explaining the explode() in function membros_ver():

The created precedent was set to receive only 1 id parameter. What I did was to change the process so that it would end as follows.

Example with variable '3,2' parameters $ids:

...WHERE m.id = 3 OR m.id = 2";

Before the final part of the trial the following form:

...WHERE m.id = 3,2";

This generated a syntax error. Then it was necessary to create an "OR" in the final string for each parameter sent before performing the process.

  • don’t know why erase the thanks. my thank you again.

Browser other questions tagged

You are not signed in. Login or sign up in order to post.