Ir para conteúdo
Flaviaac

[dúvida] Minha variável não mostrando o tipo certo.

Recommended Posts

Boa tarde galera!

 

Estou tendo um problema esquisito aqui.

Sou iniciante e não faço a mínima ideia do que pode ser.

 

 

Veja só, no campo dropdown abaixo coloquei no "value" o ID, mas ele salva no banco como tipo STRING e não INT.

<?php
$sql = "SELECT id, sigla FROM local ORDER BY sigla ASC";
$result = $conn->query($sql);
?>
.
.
.
<select name="local" class="form-control">
  <option selected>Selecione...</option>
  <?php
  while($row = $result->fetch_assoc()){                                  
    echo "<option value=".$row['id'].">".$row['sigla']."</option>";                                  
  }                              
  ?>                            
</select>
.
.
.

Dei um var_dump() pra saber o que apareceria e ele mostra como STRING.

<pre>
<?php
$sql = "SELECT id, sigla FROM local ORDER BY sigla ASC";
$result = $conn->query($sql);

$row = $result->fetch_assoc();  
var_dump($row['id']);
?>
</pre>

Resultado:

  string(1) "5"

 

 

Esse é o Banco de dados:

Coloquei a coluna ID como INT.

-- phpMyAdmin SQL Dump
-- version 4.8.3
-- https://www.phpmyadmin.net/


SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
SET AUTOCOMMIT = 0;
START TRANSACTION;
SET time_zone = "+00:00";


/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8mb4 */;

--
-- Banco de dados: `arq`
--

-- --------------------------------------------------------

--
-- Estrutura para tabela `local`
--

CREATE TABLE `local` (
  `id` int(11) NOT NULL,
  `SIGLA` mediumtext NOT NULL,
  `LOCAL` mediumtext NOT NULL,
  `TELEFONE` mediumtext NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

--
-- Fazendo dump de dados para tabela `local`
--

INSERT INTO `local` (`id`, `SIGLA`, `LOCAL`, `TELEFONE`) VALUES
(1, 'AAC', 'AAC', '2222-2222'),
(2, 'DSV', 'DSV', '1111-1111'),
(3, 'SCA', 'SCA', '3333-3333');

--
-- Índices de tabelas apagadas
--

--
-- Índices de tabela `local`
--
ALTER TABLE `local`
  ADD PRIMARY KEY (`id`);

--
-- AUTO_INCREMENT de tabelas apagadas
--

--
-- AUTO_INCREMENT de tabela `local`
--
ALTER TABLE `local`
  MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=6;
COMMIT;

/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;

Obrigada pessoal!

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não entendi qual o problema.

Está gerando algum erro?

 

O PHP tem conversão automática de tipos, uma vez que você precise fazer algum cálculo com este id, você pode realizar tranquilamente que a conversão automática faz o trabalho.

 

Fonte:

https://www.php.net/manual/pt_BR/language.types.type-juggling.php

 

Uma fonte interessante pra compreender melhor a tipagem do PHP:
https://pt.stackoverflow.com/questions/76831/criando-um-conjunto-de-variaveis-no-php

Editado por ricardo cf
melhorar resposta com boas referencias

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Flaviaac

 

Experimente substituir o comando VAR_DUMP por GETTYPE do PHP.

Se o conteudo da coluna no seu Banco de Dados for um número, então ele deve exibir INTEGER, se for do tipo STRING vai aparecer STRING mesmo, porém é certo de que você está incluindo um INTEIRO e não uma STRING no Banco de Dados, pois caso você tente colocar um alphanumérico no campo INT você irá receber um erro impedindo que o valor seja incluido na tabela.

 

DE:

var_dump($row['id']);

 

PARA:

echo gettype($row['id'];

 

Uma perguntinha, o que isso está te causando de problema?

 

Espero ter ajudado.

 

Att.

Felipe Coutinho

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora

  • Conteúdo Similar

    • Por Carlos Web Soluções Web
      Olá...
      Estou tentando fazer o seguinte !!
      Listando dados em tabela !!
      Gostaria que....se na listagem houver 4 linhas...indepedente de seu número de ID, faça a listagem em ID ser em ordem 1 2 3 4 !!
      Exemplo...se tiver uma listagem de dados que está em ID 1 3 3...faça ficar 1 2 3 !!

       
      echo "<table class='tabela_dados' border='1'> <tr> <td>ID</td> <td>Nome Empresa</td> <td>Responsável</td> <td>Telefone 1</td> <td>Telefone 2</td> <td>E-mail 1</td> <td>E-mail 2</td> <td>Endereço</td> <td>CEP</td> <td>Bairro</td> <td>AÇÃO 1</td> <td>AÇÃO 2</td> </tr> "; $sql = "SELECT ID FROM usuarios_dados WHERE Usuario='$usuario'"; $result = $conn->query($sql); $num_rows = $result->num_rows; $Novo_ID = 1; for ($i = 0; $i < $num_rows; $i++) { $registro = $result -> fetch_row(); $sql2 = "UPDATE usuarios_dados SET ID='$Novo_ID' WHERE ID='$Novo_ID'"; $result2 = $conn->query($sql2); $Novo_ID++; } $sql = "SELECT * FROM usuarios_dados"; $result = $conn->query($sql); if ($result->num_rows > 0) { // output data of each row while($row = $result->fetch_assoc()) { echo "<tr> <td>$row[ID]</td> <td>$row[Nome_Empresa]</td> <td>$row[Responsavel]</td> <td>$row[Telefone_1]</td> <td>$row[Telefone_2]</td> <td>$row[Email_1]</td> <td>$row[Email_2]</td> <td>$row[Endereço]</td> <td>$row[CEP]</td> <td>$row[Bairro]</td> <td> <form method='post' action='Editar_Dados.php'> <input type='hidden' name='usuario' value='$usuario'> <input type='hidden' name='senha' value='$senha'> <input type='hidden' name='ID' value='$row[ID]'> <input type='submit' style='padding: 10px;' value='EDITAR'> </form> </td> <td> <form method='post' action='Deletar_Dados.php'> <input type='hidden' name='usuario' value='$usuario'> <input type='hidden' name='senha' value='$senha'> <input type='hidden' name='ID' value='$row[ID]'> <input type='submit' style='padding: 10px;' value='DELETAR'> </form> </td> </tr> "; } } else { echo "0 results"; } $conn->close();  
    • Por lezão
      Boa tarde, galera!
      Tudo bem com vcs?
       
      Estou precisando de uma limitador de palavras.
      Tenho um texto de 600 palavras e gostaria de que na pagina principal aparece se, apenas 30 palavras do texto.
      Achei esse codigo na innternet, mas ele não limita palavras, mas sim ele corta as palavras ficando assim:  "Tenho um texto de 600 palav..."
      ?php echo substr("$texto;", 0, 200); ? com uma variavel que limita as palavras ficaria assim: "Tenho um texto de 600 palavras". exibiria essas 6 palavras.
    • Por Luiz Henrique
      Olá pessoas,
       
      Tenho uma classe e dentro dela várias chamadas para métodos de acordo com a necessidade em outra classe (para obter dados DB), como são muitas e vou duplicar os arquivos, para ganhar tempo queria colocar o nome da classe em uma variável porém não funciona.
       
      use Class1; class Class2 { public $className = 'Class1'; ... $dados = $this->className::function(); // não funciona } Era para gerar isso:
      $dados = Class1::function();
      Se eu der um echo $this->$className, ele me retorno o nome da Class1 porém para executar um método dentro da Class1 não vai, diz que a classe Class1 não existe!
      Tem alguma forma de funcionar isso?
       
      Obrigado.
    • Por Boca
      Pessoas estou com uma duvida preciso de ajuda
      Tenho alguns campos chamados "horario_0, horario_1, horario_2, horario_3, horario_4, horario_5, horario_6 no meu banco de dados
      estou precisando que ela seja dinâmica dentro de um for
      exemplo:
       
      <?php for ($dia = 0; $dia < 7; $dia++): $resultadoBD->horario_$dia endfor; ?>  
    • Por Carlos Antoliv
      Olá, senhores.
       
      Sei que existem diversos tópicos por aí sobre esse assunto, contudo, não consegui solucionar o problema, mesmo depois de 1 dia tentando fazer algo até simples.
       
      Seguinte, estou pegando o id de um produto e tentando jogar em outra tabela, pelo checkbox.
      ex:
       
      id    produto
      23   lapis
      43  caneta
       
      pelo checkbox, a pessoa escolhe o produto e adicona em uma lista, que é outro banco. Se pessoa selecionar mais de 1 item da lista, o laço só envia para o banco apenas 1 item de qualquer forma.
       
      Vou postar o Código:
       
      Código do INSERT:
       
          $check1 = (isset($_POST["check"]) && $_POST["check"] != null) ? $_POST["check"] : "";     foreach($check1 as $check){                         $stmt = $conexao->prepare("INSERT INTO tb_itemProdKit (fk_tb_kit, fk_usuarios, fk_tb_produtos) VALUES (?, ?, ?)");                  $stmt->bindParam(1, $nome_prod);         $stmt->bindParam(2, $idSessao);         $stmt->bindParam(3, $check);                if ($stmt->execute()) {             if ($stmt->rowCount() > 0) {                 echo "Dados cadastrados com sucesso!";                 $id_prod = null;                 $nome_prod = null;                 $idSessao = null;                 $check = null;                             header("Location: item-produto-kit.php");exit;                              } else {                 echo "Erro ao tentar efetivar cadastro";             }         } else {                throw new PDOException("Erro: Não foi possível executar a declaração sql");         }     } } } catch (PDOException $erro) {         echo "Erro: " . $erro->getMessage();     }    
       
      Agora o código do checkbox:
       
             if ($stmt->execute()) {                 while ($rs = $stmt->fetch(PDO::FETCH_OBJ)) {                       echo "<tr>";                     echo "<td><input type='checkbox' name='check[]' id='check' value='".$rs->id_prod."'</td><td class='lista_usuario'>".$rs->nome_produto."</td><td class='lista_usuario'>".$rs->desc_prod."</td><td class='lista_usuario'>".$rs->peso_liq_prod                                ."</td>"                                ;                     echo "</tr>";                 }             }else {                 echo "Erro: Não foi possível recuperar os dados do banco de dados";             }     } catch (PDOException $erro) {         echo "Erro: ".$erro->getMessage();     }     echo "</form>"    
          ?>  
       
       
      Está cadastrando apenas 1 item e não múltiplos itens.
       
      abço!!
       
       
       
       
       
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.