Ir para conteúdo
Fórum Script Brasil
  • 0

While sem receber os ID separado nos inputs


Yago Felix

Pergunta

Iniciei recentemente na programação e estou criando formulários para treinar. e criando esse formulário resolvi treinar pegando dados do banco de dados e criando automaticamente as div de categoria e separar por subcategoria caso aja e cada descrição fica em sua categoria com seu input type="checkbox" e span com o nome da descrição. mas sempre que eu clico nos span com o nome da descrição de um especifico checkbox ele seleciona o primeiro input daquela categoria. mas se eu selecionar um checkbox ele esta pegando a informação certa mas o span só seleciona o primeiro checkbox. seque abaixo o codigo e imagem em anexo.

 

 

 
<?php
    $result_categoria = "SELECT * FROM categoria";
    $resultado_categoria = mysqli_query($conn$result_categoria);
    while($row_categoria = mysqli_fetch_assoc($resultado_categoria)){?>
        <div class="row" > 
            <p class="col-12 bar-divisao bar-divisao-p" value="<?php echo $row_categoria['idcategoria'];?>" class="bar-divisao-p"><?php echo $row_categoria['categoria_nomes'];?> </p>
            <div class="">
                <?php
                    $id = $row_categoria['idcategoria'];
                    $sql = "SELECT * FROM categorias_sub WHERE categoria_idcategoria = $id";
                    $query = mysqli_query($conn$sql);
                    while($row_sub_categoria = mysqli_fetch_array($query)){?>
                        <div>  
                            <label name="" value="<?php echo $row_sub_categoria['idsub_categorias'];?>"> <?php echo $row_sub_categoria['sub_categorias_nome'];?>
                                    <div class="form-check-inline">
                                <?php
                                    $id = $row_categoria['idcategoria'];
                                    $id_sub = $row_sub_categoria['idsub_categorias'];
                                    $sql_desc = "SELECT * FROM categoria_desc WHERE (categoria_idcategoria = $idAND (idsub_categorias = $id_sub)";
                                    $desc_categorias = mysqli_query($conn,$sql_desc);
                                    
                                    while($row_desc = mysqli_fetch_array($desc_categorias)){?>
                                            <input class="form-check-input" name="sinto_clinic[]" type="checkbox" value="<?php echo $row_desc['iddesc_categoria'];?>">
                                            <span class="form-check-label" for=""value="<?php echo $row_desc['iddesc_categoria'];?>"> <?php echo $row_desc['desc_categoria_nome'];?> </span>
                                <?php  }
                                ?>
                                        </div>
                            </label>
                        </div>
                    <?php
                    }
                ?>
            </div>
        </div>
        <?php
    }
?>

loop.png

Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

  • 0

Esse caso é bem interessante. Sempre vi o PHP como um recurso para montar um formulário e com ele editar, acrescentar, deletar os registros de um banco de dados. O caso do Yago Felix é justamente o contrário. Ele usa o banco de dados para montar um formulário no PHP! Estudei o código dele, mas eu não consegui montar o formulário. Assim tive que criar um código na unha para ver se eu chegava no formuário do Yago Felix. Depois de dois dias eu consegui! Mas ao invés de usar três tabelas, eu usei apenas uma tabela:

CREATE DEFINER=`root`@`localhost` PROCEDURE `sintoma`()
BEGIN
DROP TABLE IF EXISTS `sintomas`;
CREATE TABLE `sintomas` (
  `id` int NOT NULL AUTO_INCREMENT,
  `descricao` varchar(45) COLLATE utf8mb4_general_ci DEFAULT NULL,
  `detalhe` varchar(255) COLLATE utf8mb4_general_ci DEFAULT NULL,
  `tipo` varchar(255) COLLATE utf8mb4_general_ci DEFAULT NULL,
  `grau` varchar(255) COLLATE utf8mb4_general_ci DEFAULT NULL,
  `tecnologia` varchar(255) COLLATE utf8mb4_general_ci DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
INSERT INTO `sintomas` VALUES (1,'SINAIS E SINTOMAS CLINICOS','OD,OE\',FLUTUANTE,PROGRASSIVA,COM ZUMBIDO,COM TONTURA',NULL,NULL,NULL),(2,'PROVÁVEL ETIOLOGIA','DESCONHECIDA,GENÉTICA,SURDEZ,MÁ FORMAÇÃO CONGÊNITA,PRESBIACUSIA,ÓTITE MÉDIA CRÔNICA,PÓS-OPERATÓRIO,TCE,IDIOPÁTICA,USO DE OTÓXICO,FRATURA DO OSSO TEMPORAL',NULL,NULL,NULL),(3,'CAUSAS PERINATAIS','ANOXIA,PESO BAIXO,TRABALHO DE PARTO PROLONGADO,PREMATURIDADE,HIPERBILIRRUBINEMIA',NULL,NULL,NULL),(4,'DOENÇAS INFECCIOSAS','MENINGITE,SARAMPO,TOXOPLASMOSE,CAXUMBA,RUBÉOLA CONGÊNITA,OUTROS',NULL,NULL,NULL),(5,'CARACTERIZACAO DA PERDA','','NEUROSENSORIAL,CONDUTIVA,MISTA,CENTRAL','NORMAL,LEVE,MODERADA,SEVERA,PROFUNDA,ANACUSIA',NULL),(6,'PRÓTESE AUDITIVA',NULL,'RETRO AURICULAR OE,RETRO AURILICULAR OD,INTRA AURICULAR OD,INTRA AURICULAR OE,INTRA AURICULAR OD,INTRA CANAL OE,INTRA CANAL OD',NULL,'TIPO A OE,TIPO A OD,TIPO B OE,TIPO B OD,TIPO C OE,TIPO C OD,VIA ÓSSEA OE,VIA ÓSSEA OD');END
astudy.php

<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.2.0/dist/css/bootstrap.min.css"
    rel="stylesheet" 
    integrity="sha384-gH2yIJqKdNHPEq0n4Mqa/HGKIhSkIHeL5AyhkYV8i59U5AR6csBvApHHNl/vI1Bx"     
    crossorigin="anonymous">
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.2.0/dist/js/bootstrap.bundle.min.js" 
integrity="sha384-A3rJD856KowSb7dwlZdYEkO39Gagi7vIsF0jrRAoQmDKKtQBHUuLZ9AsSv4jD4Xa"
crossorigin="anonymous"></script>
<style>
body {font-size:70%;width:90%;margin:0 auto}
.espaco {height:5%}
input[type=checkbox]{vertical-align:middle;position:relative;bottom:1px}
label{display:block}
</style>
<?php
$mysqli=new mysqli("localhost","root","","astudy");
$query=$mysqli->query("select * from sintomas");
while($row=$query->fetch_assoc()){
    echo "<div class=espaco></div>";
    echo "<div class='d-flex bg-primary justify-content-center'>";
    echo "<b>".$row['descricao']."</b><br></div>";
    $detalhes=explode(",",$row['detalhe']);
    echo "<div class='d-flex text-bg-lightgray justify-content-center'>";
    if(strlen($detalhes[0])){
        for($i=0;$i<count($detalhes);$i++){
            echo "&nbsp<label><input type=checkbox>&nbsp".$detalhes[$i]."</label>&nbsp"; }
    echo "<br>";}
    echo "</div>";

    echo "<div class='d-flex text-bg-lightgray justify-content-center'>";
    $tipo=explode(",",$row['tipo']);
    if(strlen($tipo[0])){echo "TIPO: ";
        for($i=0;$i<count($tipo);$i++){
            echo "&nbsp<label><input type=checkbox>&nbsp".$tipo[$i]."</label>&nbsp";}
    echo "<br>";}
    echo "</div>";

    echo "<div class='d-flex text-bg-lightgray justify-content-center'>";
    $grau=explode(",",$row['grau']);
    if(strlen($grau[0])){echo "GRAU: ";
        for($i=0;$i<count($grau);$i++){
            echo "&nbsp<label><input type=checkbox>&nbsp".$grau[$i]."</label>&nbsp";}
    echo "<br>";}
    echo "</div>";

    echo "<div class='d-flex text-bg-lightgray justify-content-center'>";
    $tecnologia=explode(",",$row['tecnologia']);
    if(strlen($tecnologia[0])){echo "TECNOLOGIA: ";
        for($i=0;$i<count($tecnologia);$i++){
            echo "&nbsp<label><input type=checkbox>&nbsp".$tecnologia[$i]."</label>&nbsp";}
    echo "<br>";}
    echo "</div>";
    }

 

Screenshot_1.png

Editado por Frank K Hosaka
Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,5k
×
×
  • Criar Novo...