Ir para conteúdo

Arquivado

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

TeixeiraRamos

tabela com MySQLi

Recommended Posts

Por favor,

O código abaixo, criado pelo autor, em um livro MySQL.

Como tenho o "Guia de Atualização MySQL Para MySQLi" do Beraldo" fiz as alterações necessárias.

Contudo, quando chega na parte da <table>  </table> não consigo fazer as alterações.

Originalmente a página lista.php é assim:

<?php 
	# Dados para a conexão com o banco de dados
	$servidor = 'localhost'; # Nome DNS ou IP do seu servidor HTTP
	$usuario = 'root';		 # Nome de usuário para acesso ao MySQL
	$senha = '';             # Senha de acesso                     // Já alterei para meu acesso
	$banco = 'INTEGRACAO';   # Nome do banco de dados
	
	# Executa a conexão com o MySQL
	$link = mysqli_connect($servidor, $usuario, $senha, $banco)  // Já alterado para MySQLi
		or die('Não foi possível conectar: ' .mysqli_error());   // Já alterado para MySQLi
		
	# Seleciona o banco de dados que deseja utilizar
	//$select = mysql_select_db($banco);         // Já alterado para MySQLi
	
	# Cria a expressão SQL de consulta aos registros
	$sql = "SELECT * FROM LIVROS";
?>
<HTML>
	<TABLE border=1>
		<tr>
			<td>Cód.</td>
			<td>Livro</td>
			<td>Autor</td>
			<td>Editora</td>
		</tr>

<?
	# Exibe os resultados de novidades e notícias
    $result = mysqli_query($sql);                                          // Já alterado para MySQLi
	while ($tbl = mysqli_fetch_array($result))                             // Já alterado para MySQLi
    {
	    $Codigo  = $tbl["ID"]; 
		$Livro   = $tbl["LIVRO"];
		$Autor   = $tbl["AUTOR"];
        $Editora = $tbl["EDITORA"];
         
		echo"<TR>";
		echo "<TD>$Codigo ";
		echo "<A href=\"inserir.php?acao=editar&buscacodigo=$Codigo\">";
		echo "(Editar)</A>";
		echo "<A href=\"gerencia-registro.php?acao=excluir&buscacodigo=$Codigo\">";
		echo "(Excluir)</A>";
		echo "<TR>";
	}
?>
    </TABLE>
	<BR><A href="inserir.php">Clique aqui para inserir um novo registro.</A>
</HTML>	

Não consigo criara a tabela.

Tentei:

<HTML>
	<TABLE border=1>
		<tr>
			<td>Cód.</td>
			<td>Livro</td>
			<td>Autor</td>
			<td>Editora</td>
		</tr>

<?
	# Exibe os resultados de novidades e notícias
    $result = mysqli_query($sql);                                          // Já alterado para MySQLi
	while ($tbl = mysqli_fetch_array($result))                             // Já alterado para MySQLi
    {
	   echo"<tr>
	          <td>" . $tbl['ID']      . "</td>
		      <td>" . $tbl['livro']   . "</td>
		      <td>" . $tbl['autor']   . "</td>
		      <td>" . $tbl['editora'] . "</td>
	       </tr>";
	   	           	
       		 
		
}
echo</TABLE>"
?>

Não funciona.

 

 

 

 

 

 

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

O ideal seria usar a sintaxe literal do mysql, porque nem sempre o PHP consegue interpretar.
 

$sql = "SELECT * FROM `LIVROS`"; //Sempre utilizando ` para campos e tabelas e ' para valores

/* Exemplo */

$sql = "UPDATE `tabela` SET `campo 1` = 'valor 1', `campo 2` = 'valor 2' WHERE `campo_ID` = '25'";

mysql_query($sql); // esse comando vai atualizar os campos 1 e 2 com os valores, nos resultados onde ID for igual a 25

Utilize os comando mysql ao invés de mysqli.

Alterando o seu código...

    $result = mysql_query($sql);                                          // Alterado para MySQL
	while ($tbl = mysql_fetch_assoc($result))                             // Trocando mysqli_fetch_array por mysql_fecth_assoc
    {
	   echo"<tr>
	          <td>" . $tbl['ID']      . "</td>
		      <td>" . $tbl['livro']   . "</td>
		      <td>" . $tbl['autor']   . "</td>
		      <td>" . $tbl['editora'] . "</td>
	       </tr>";
	   	        		 
		
}
echo '</TABLE>';

Nesse código eu troquei a query mysqli por mysql e o comando mysqli_fetch_array por mysql_fetch_assoc. Não sei a diferença entre as duas, mas sei que já passei pelo mesmo problema que você. E mysql_fetch_assoc sempre funciona cmg.

Espero ter ajudado

Compartilhar este post


Link para o post
Compartilhar em outros sites

Prezado Vilker Duarte,

Vou tentar, mas confesso que não entendi. 

Citar

O ideal seria usar a sintaxe literal do mysql, porque nem sempre o PHP consegue interpretar.

O livro vem explicando passo a passo, mas se alterar lista.php estarei complicando outros arquivos.

Por favor, observe o seguinte: O livro tem "exemplos práticos e objetivos, será visto como inserir, alterar e excluir dados em seu banco de dados, utilizando o PHP". Mais a frente informar que a versão do PHP é 5 e o meu é PHP 7.

Graças a orientações daqui do fórum eu consigo hoje criar tabela em uma página PHP 7. Quando me refiro a tabela não é criar a expressão, conexão etc.

Considerando que o bando de dados (do livro "integracao") já está povoado e, se fosse apenas editar a tabela da página lista.php, o código a baixo tem o resultado satisfatório:      

 

<?php 
	// Dados para a conexão com o banco de dados
	$servidor = 'localhost'; 
	$usuario = 'root';		 
	$senha = '';             
	$banco = 'integracao';   
	
	// Executa a conexão com o MySQL
	$link = mysqli_connect($servidor, $usuario, $senha, $banco)  
		or die('Não foi possível conectar: ' .mysqli_error());  
        mysqli_set_charset($link, 'utf8');		
		
	
	// Cria a expressão SQL de consulta aos registros
	$sql = mysqli_query($link, "SELECT * FROM livros") or dio ("Erro");
?>
<html>
<?php
echo"<table border='1'>
	<thead>
		<tr>
			<td>Cód.</td>
			<td>Livro</td>
			<td>Autor</td>
			<td>Editora</td>
		</tr>
    </thead>
	<tbody>";
     
	// Exibe os resultados de novidades e notícias
    while ($tbl = mysqli_fetch_array($sql))                            
    {
	    echo"<tr> 
				<td>" . $tbl["id"]		. "</td> 
				<td>" . $tbl["livro"]   . "</td>
				<td>" . $tbl["autor"]   . "</td>
				<td>" . $tbl["editora"] . "</td>
            </tr>";
	}
    echo"</tbody>
    </table>";    
?>
<br><a href="inserir.php">Clique aqui para inserir um novo registro.</a>
</html>	

Compara com esse código abaixo desenvolvido em PHP 5 e na minha máquina é PHP 7

<?php 
	# Dados para a conexão com o banco de dados
	$servidor = 'localhost'; # Nome DNS ou IP do seu servidor HTTP
	$usuario = 'root';		 # Nome de usuário para acesso ao MySQL
	$senha = '';             # Senha de acesso                     // Já alterei para meu acesso
	$banco = 'INTEGRACAO';   # Nome do banco de dados
	
	# Executa a conexão com o MySQL
	$link = mysqli_connect($servidor, $usuario, $senha, $banco)  // Já alterado para MySQLi
		or die('Não foi possível conectar: ' .mysqli_error());   // Já alterado para MySQLi
		
	# Seleciona o banco de dados que deseja utilizar
	//$select = mysql_select_db($banco);         // Já alterado para MySQLi
	
	# Cria a expressão SQL de consulta aos registros
	$sql = "SELECT * FROM LIVROS";
?>
<HTML>
	<TABLE border=1>
		<tr>
			<td>Cód.</td>
			<td>Livro</td>
			<td>Autor</td>
			<td>Editora</td>
		</tr>

<?
	# Exibe os resultados de novidades e notícias
    $result = mysqli_query($sql);                                          // Já alterado para MySQLi
	while ($tbl = mysqli_fetch_array($result))                             // Já alterado para MySQLi
    {
	    $Codigo  = $tbl["ID"]; 
		$Livro   = $tbl["LIVRO"];
		$Autor   = $tbl["AUTOR"];
        $Editora = $tbl["EDITORA"];

        echo "<TR>";
		echo "<TD>$Codigo ";
		echo "<A href=\"inserir.php?acao=editar&buscacodigo=$Codigo\">";
		echo "(Editar)</A>";
		echo "<A href=\"gerencia-registro.php?acao=excluir&buscacodigo=$Codigo\">";
		echo "(Excluir)</A>";
		echo "<TR>";
     }

?>
</TABLE>    
	<BR><A href="inserir.php">Clique aqui para inserir um novo registro.</A>
</HTML>	

Resultado:

 

Citar
Cód. Livro Autor Editora
1 Qualidade de Software André Koscianski Novotec
2 Blender 3D - Guia do Usuário Allan Brito Novotec
3 Blender 3D - Guia do Usuário Allan Brito Novotec
4 UML 2 - Guia de Consulta Rápida Gilleanes T. A. Guedes Novotec


Clique aqui para inserir um novo registro.

 

Acredito que tudo (smj) do scripts acima já atualizei de MySQL para MySQLi agora a tabela desenvolvida em PHP 5, que envolve variáveis, link na <tr>, não consigo. 

Até o "CRUD - Cadastrar, Formulário para Editar, Apagar informação no Banco" que tenho em aula não explica criar tabelas só lista os registros  separados por <hr> .

Até agora não achei um livro, tutorial etc que me atenda nessa parte para PHP 7.

Para PHP 5.2, 5.0 tenho livros com muitos exemplos, mas para desenvolver em PHP 7 eu ainda não consegui.

 

 

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Desde 2013 o php.net recomenda fortemente que não se use as extensões mysql_* nunca mais!
E elas nem existem mais no php7
Use mysqli ou pdo
mysql_.jpg

Mostre as mensagens de erro que aparecem, elas vão indicar, na maioria das vezes, exatamente o que é.
 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá Washalbano, bom dia.

Desculpe, mas não estou conseguindo esclarecer bem o que se trata.

Por favor, observe:

Se eu manter todo o script abaixo da forma como está no livro (PHP 5 e minha máquina é PHP 7), por favor, veja o resultado:

<?php 
	# Dados para a conexão com o banco de dados
	$servidor = 'localhost'; # Nome DNS ou IP do seu servidor HTTP
	$usuario = 'root';		 # Nome de usuário para acesso ao MySQL
	$senha = '******';       # Senha de acesso                     
	$banco = 'INTEGRACAO';   # Nome do banco de dados
	
	# Executa a conexão com o MySQL
	$link = mysql_connect($servidor, $usuario, $senha)  
		or die('Não foi possível conectar: ' .mysql_error());   
		
	# Seleciona o banco de dados que deseja utilizar
	$select = mysql_select_db($banco);         
	
	# Cria a expressão SQL de consulta aos registros
	$sql = "SELECT * FROM LIVROS";
?>
<HTML>
	<TABLE border=1>
		<tr>
			<td>Cód.</td>
			<td>Livro</td>
			<td>Autor</td>
			<td>Editora</td>
		</tr>

<?
	# Exibe os resultados de novidades e notícias
    $result = mysql_query($sql);                                          
	while ($tbl = mysql_fetch_array($result))                             
    {
	    $Codigo  = $tbl["ID"]; 
		$Livro   = $tbl["LIVRO"];
		$Autor   = $tbl["AUTOR"];
        $Editora = $tbl["EDITORA"];

        echo "<TR>";
		echo "<TD>$Codigo ";
		echo "<A href=\"inserir.php?acao=editar&buscacodigo=$Codigo\">";
		echo "(Editar)</A>";
		echo "<A href=\"gerencia-registro.php?acao=excluir&buscacodigo=$Codigo\">";
		echo "(Excluir)</A>";
		echo "<TR>";
     }

?>
</TABLE>    
	<BR><A href="inserir.php">Clique aqui para inserir um novo registro.</A>
</HTML>	

Resultado:

Citar
( ! ) Fatal error: Uncaught Error: Call to undefined function mysql_connect() in C:\wamp\www\estudoporlivros\testeprogintegracao\lista.php on line 9
( ! ) Error: Call to undefined function mysql_connect() in C:\wamp\www\estudoporlivros\testeprogintegracao\lista.php on line 9

 

O script está todo em MySQL, mesmo alterando a linha 9, vai mostrar outras.

Agora vamos ver o mesmo script com as atualizações conforme o "Guia de Atualização MySQL para MySQLi" do Beraldo.

 

<?php 
	# Dados para a conexão com o banco de dados
	$servidor = 'localhost'; # Nome DNS ou IP do seu servidor HTTP
	$usuario = 'root';		 # Nome de usuário para acesso ao MySQL
	$senha = '';             # Senha de acesso                     
	$banco = 'INTEGRACAO';   # Nome do banco de dados
	
	# Executa a conexão com o MySQL
	$link = mysqli_connect($servidor, $usuario, $senha)  
		or die('Não foi possível conectar: ' .mysqli_error());   
		
	# Seleciona o banco de dados que deseja utilizar
	//$select = mysql_select_db($banco);         
	
	# Cria a expressão SQL de consulta aos registros
	$sql = "SELECT * FROM LIVROS";
?>
<HTML>
	<TABLE border=1>
		<tr>
			<td>Cód.</td>
			<td>Livro</td>
			<td>Autor</td>
			<td>Editora</td>
		</tr>

<?
	# Exibe os resultados de novidades e notícias
    $result = mysqli_query($sql);                                          
	while ($tbl = mysqli_fetch_array($result))                             
    {
	    $Codigo  = $tbl["ID"]; 
		$Livro   = $tbl["LIVRO"];
		$Autor   = $tbl["AUTOR"];
        $Editora = $tbl["EDITORA"];

        echo "<TR>";
		echo "<TD>$Codigo ";
		echo "<A href=\"inserir.php?acao=editar&buscacodigo=$Codigo\">";
		echo "(Editar)</A>";
		echo "<A href=\"gerencia-registro.php?acao=excluir&buscacodigo=$Codigo\">";
		echo "(Excluir)</A>";
		echo "<TR>";
     }

?>
</TABLE>    
	<BR><A href="inserir.php">Clique aqui para inserir um novo registro.</A>
</HTML>	

O Resultado é outro. Veja, por favor:

Citar

"; echo ""; } ?>

Cód. Livro Autor Editora
$Codigo "; echo ""; echo "(Editar)"; echo ""; echo "(Excluir)"; echo "


Clique aqui para inserir um novo registro.

 

Não mostrou erro de atualização de MySQL para MySQLi.

Por isso, creio que o erro aqui é erro de versão de PHP, ou seja, o script foi atualizado para MySQLi, mas não para versão do PHP para 7. O livro está mostrando um script com PHP 5 e eu estou com PHP 7.

Entendo que não basta só atualizarmos o script de MySQL para MySQLi, mas observar também o restante do código se está para a versão do PHP que se encontra na máquina. Se o autor criou o código em PHP 5 (não tem erro) não vou ter o mesmo resultado na minha máquina com PHP 7. Correto?


Resumindo, eu não sei como fazer com que o script abaixo seja alterado para abrir em uma máquina com PHP7. Obribr

 

<HTML>
	<TABLE border=1>
		<tr>
			<td>Cód.</td>
			<td>Livro</td>
			<td>Autor</td>
			<td>Editora</td>
		</tr>

<?
	# Exibe os resultados de novidades e notícias
    $result = mysqli_query($sql);                                          // Já alterado para MySQLi
	while ($tbl = mysqli_fetch_array($result))                             // Já alterado para MySQLi
    {
	    $Codigo  = $tbl["ID"]; 
		$Livro   = $tbl["LIVRO"];
		$Autor   = $tbl["AUTOR"];
        $Editora = $tbl["EDITORA"];

        echo "<TR>";
		echo "<TD>$Codigo ";
		echo "<A href=\"inserir.php?acao=editar&buscacodigo=$Codigo\">";
		echo "(Editar)</A>";
		echo "<A href=\"gerencia-registro.php?acao=excluir&buscacodigo=$Codigo\">";
		echo "(Excluir)</A>";
		echo "<TR>";
     }

?>
</TABLE>    
	<BR><A href="inserir.php">Clique aqui para inserir um novo registro.</A>
</HTML>	

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá!
só uma observação:
O W3C e o w3schools recomendam usar tags html em lowercase (tudo em minúsculas)
html_lowercase.jpg

Quando for abrir um trecho de script php não abra assim:

<?

Abra sempre assim:
<?php

Também é uma recomendação "oficial", está na psr-1, veja:

psr-1.jpg

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Com relação a:

Citar

só uma observação:
O W3C e o w3schools recomendam usar tags html em lowercase (tudo em minúsculas)

Por favor, as tags não são minhas. Digitei igual ao livro, mas tudo bem. 

Também só uso tags minúsculas. Observe o primeiro script, aquelas tags são minhas. 

Mas fica a observação para o autor do livro.

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

  • Conteúdo Similar

    • Por mkboy
      Olá
       
      Tenho uma situação onde tenho a mesma tabela em dois bancos de dados diferentes, em locais diferentes.
      E quando atualizar uma tabela preciso atualizar a segunda no outro banco de dados também, é a mesma instrução SQL, os bancos / tabelas / registros são iguais.
       
      Tentei isso, mas não funciona:
       
      $endereco_banco = "186.000.00.01"; $usuario = "us01"; $senha = "010101"; $banco = "db01"; $conexao = new mysqli($endereco_banco,$usuario, $senha, $banco); $endereco_banco_externo = "186.000.00.02"; $usuario_externo = "us02"; $senha_externo = "020202"; $banco_externo = "db02"; $conexao_externo = new mysqli($endereco_banco_externo,$usuario_externo, $senha_externo, $banco_externo); //Atualiza no primeiro DB $conexao->query($str) or trigger_error($conexao->error." [$str]"); //Atualiza no segundo DB $conexao_externo->query($str) or trigger_error($conexao_externo->error." [$str]"); Podem me ajudar por favor.
    • Por Lísias de Castro
      Ola. Estou criando um sistema de carrinho em php e pra isso preciso de um banco de dados. Pra não ficar chamando todas as funções a cada vez que a pagina atualiza, decidi usar a função mysqli_select_db, que verifica se o db existe e caso não exista, entre nas funções e crie. Porém, ao chamar a função quando o db não existe o php lança um "erro não capturado" e trava o layout. Se eu chamo o código sem o mysqli_select_db o código roda, porem chamando as funções a cada atualização. Poderia ser algum erro na api, ou tem uma nova forma pra pegar o tipo mysqli no php8?
      Esse é o código que eu chamo pra salvar os dados:
       
      ```php
      public function save($host,$user,$pass,$db){
              $connection = mysqli_connect($host, $user, $pass);
              if($connection){
                  if(mysqli_select_db($connect,$db)){
                  }
                  $dbCreator = "CREATE DATABASE IF NOT EXISTS ".$db;
                  if(mysqli_query($connection, $dbCreator)){
                      //echo "Database created successfully"."</br>";
                  } else{
                      echo "ERROR: Could not able to execute $sql. " . mysqli_error($connection);
                      return 0;
                  }
                  $tableCreator = "CREATE TABLE IF NOT EXISTS `".$db."_tb` (".
                              "`name` VARCHAR(64) NOT NULL,".
                              "`price` REAL,".
                              "`amount` SMALLINT,".
                              "`barcode` BIGINT NOT NULL PRIMARY KEY,".
                              "`lot` VARCHAR(64) NOT NULL,".
                              "`manufactured` VARCHAR(10) NOT NULL,".
                              "`maturity` VARCHAR(10) NOT NULL".
                              ");";
                  $insert = "INSERT INTO ".$db."_tb (`name`, `price`, `amount`, `barcode`, `lot`, `manufactured`, `maturity`) ".
                                "SELECT ".
                                "\"$this->name\",".
                                "\"$this->price\",".
                                "\"$this->amount\",".
                                "\"$this->barcode\",".
                                "\"$this->lot\",".
                                "\"$this->manufactured\",".
                                "\"$this->maturity\"".
                                " FROM dual WHERE NOT EXISTS(SELECT * FROM $db"."_tb WHERE barcode = '$this->barcode')LIMIT 1;";
                  if(mysqli_select_db($connection,$db)){
                      if(mysqli_query($connection,$tableCreator));//echo "Tabela ".$db."_tb criada com sucesso.<br/>";
                      if(mysqli_query($connection,$insert));//echo "Dados inseridos com sucesso em $db"."_tb<br/>";
                  }
                  mysqli_close($connection);
                  return 1;
              }
              return 0;
          }
      ```


    • Por AdrianoAP
      Pessoal estou tendo este erro quando eu fui passa a minha aplicação do mysql para o mysqli vejam o código -->>
       
      <?php
        $emitente = $mysqli->query("SELECT nome FROM emitente ORDER BY id ASC LIMIT 1");
        while($ln = $emitente->fetch_array()){
        echo $ln['nome'];
      }?>
       
       
      Devido á isso meu sistema não consegue fazer o login, se alguém puder me dar alguma dica eu agradeço.
    • Por Felper
      Criei um sistema de login com php e mysql mas não consigo realizar o login mesmo tendo certeza de que os dados foram cadastrados com sucesso. Não sei o que fiz de errado. Vejam o código:
      <?php $login2 = $_POST['loginlogar']; $senha2 = $_POST['senhalogar']; $link = mysqli_connect("localhost", "root", "", "bancolanche") or die("<h1>Não foi possível conectar!!</h1>". mysqli_error()); $banco = mysqli_select_db($link, "bancolanche") or die("<h1>Não foi possível abrir banco de dados!!</h1>". mysqli_error()); $sql = "SELECT login, senha FROM users"; $resulta = mysqli_query($link, $sql); while ($book = $resulta->fetch_object()) { $logindb = $book->login; $senhadb = $book->senha; } if($login2 == "" || $senha2 == ""){ $_SESSION['msg'] = "<h1 style='color:red'>Erro ao logar! Há campos de preenchimento obrigatório em branco.</h1>"; header("Location: logar.php"); } else { if($logindb==$login2 && $senhadb==$senha2){ $_SESSION['msg'] = "<h1 style='color:green'>Logoff realizado com sucesso!</h1>"; header("Location: index.html"); } else { $_SESSION['msg'] = "<h1 style='color:red'>Erro ao logar! Usuário inexistente ou senha incorreta.</h1>"; header("Location: logar.php"); } } mysqli_close($link); ?>  
    • Por Marcos Vinícius
      Prezados,
       
      Estou tentando fazer uma consulta que soma os valores de um campo em determinado mês/ano mas não estou conseguindo fazer funcionar. Alguém tem uma ideia do que pode ser?
       
      "SELECT sum(caepf) AS scaepf FROM atend WHERE date_format(data, '%Y-%m') <= date_format('$d', '%Y-%m') AND date_format(data, '%Y-%m') >= date_format('$d', '%Y-%m') AND pav = '$nome_pav' AND dr = '$dr' ";  
×

Informação importante

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