Jump to content
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

gsilva23

Dúvida/Pergunta acerca de código

Recommended Posts

gsilva23

Ora bons dias, recentemente pedi ajuda ao meu prof de programação, onde nós em conjunto (mais ele do que eu) desenvolvemos uma query para inserção de dados de maneira em que o user escolha em que tabela inserir.

 

Código(só o php) :

<?php
$self = $_SERVER['PHP_SELF'];
$host_name = "127.0.0.1";
$database = "visteon"; // Change your database name
$username = "root";          // Your database user id
$password = "";          // Your password
$Tabela ="";


//////// Do not Edit below /////////
try {
$dbo = new PDO('mysql:host='.$host_name.';dbname='.$database, $username, $password);
} catch (PDOException $e) {
print "Error!: " . $e->getMessage() . "<br/>";
die();
}

// Selecicionar Tabela

if(!isset($_POST['submeterTabela']) && !isset($_POST['submeterDados'])) {
 
 $form ="<form action=\"$self\" method=\"post\">";
 
  $result = $dbo->query("SHOW TABLES");
 $form.= "<select name='Tabela' class='select_box'>";
  while ($row = $result->fetch(PDO::FETCH_NUM)) {
 $form.= "<option value='$row[0]'>$row[0]</option>";
}
 $form.= "</select>";
 $form.="<br><input type=\"submit\" name=\"submeterTabela\" value=\"Submeter\"class='button'>";
  echo($form);
}

// Preencher dados

if(isset($_POST['submeterTabela']) && !isset($_POST['submeterDados']))
{
  $Tabela=$_POST['Tabela'];
  $form ="<form action=\"$self\" method=\"post\">";
  $form.="<input type=\"hidden\" name=\"Tabela\"class='tabela1'value=\"$Tabela\"> <br>"; 
  $form.="Introduz Dados<br>"; 
  $sql ="SHOW columns from ".$Tabela;
  $result = $dbo->query($sql);
  while ($row = $result->fetch(PDO::FETCH_NUM)) {
   $sql1="select Campo from descritivoscampos where Tabela='".$Tabela."' and Campo='".$row[0]."';";
   $Resultado = $dbo->query($sql1);
   $linha = $Resultado->fetch(PDO::FETCH_NUM); 
   $form .= "$linha[0]";
   $form.="<input type=\"text\" name=\"$row[0]\" size=\"5\"><br>";  
  }
  $form.=" <br><input type=\"submit\" name=\"submeterDados\"class='botao'value=\"Submeter\">";
  echo($form);
}

if(isset($_POST['submeterDados']))
{
  $Tabela=$_POST['Tabela'];
  $sql ="SHOW columns from ".$Tabela;
  $result = $dbo->query($sql);
  $sql1 = "insert into $Tabela(";
  $aux=0;
  while ($row = $result->fetch(PDO::FETCH_NUM)) {
   if ($aux!=0) $sql1 .=", ";
   if ($row[0]!='id')
   {
    $sql1 .="$row[0]"; 
    $aux=1;
   }
  }
  $sql1 .=") values (";

  $result = $dbo->query($sql);
  $aux=0;
  while ($row = $result->fetch(PDO::FETCH_NUM)) {
   if ($aux!=0) $sql1 .= ", ";

   if ($row[0]!='id')
   {
    $aa=$_POST[$row[0]];
    $sql1 .="'$aa'"; 
//$sql1 .="$row[0]"; 
    $aux=1;
   }
  }
  $sql1 .=");";
  $conn = mysqli_connect($host_name, $username, $password, $database)
 or die("Could not connect.");
  $result = mysqli_query($conn, $sql1)
 or die("Could not execute SQL query");
 if ($result) {    
 echo("Informação introduzida com Sucesso!!");
  } 




}
?>

Este programa vai buscar os fieldnames(para identificar a text box de inserção) a uma tabela auxiliar, pois também crio tabelas dinâmicamente.

No fim da elaboração do mesmo, eu perguntei lhe se deste codigo eu conseguiria fazer o delete e o "read" ao qual ele me respondeu positivamente, passado uma semana ainda n consegui adapatar isto para as outras duas funções...

Alguem pode me dar umas luzes??

Aguardo respostas, Gonçalo Silva

Share this post


Link to post
Share on other sites
M6

Basta adaptares o comando de insert para o comando de delete e select tendo em conta a sintaxe de cada um.


10 REM Generation 48K!
20 INPUT "URL:", A$
30 IF A$(1 TO 4) = "HTTP" THEN PRINT "400 Bad Request": GOTO 50
40 PRINT "404 Not Found"
50 PRINT "./M6 @ Portugal a Programar."

 

Share this post


Link to post
Share on other sites
gsilva23
Em 18/04/2019 às 12:28, M6 disse:

Basta adaptares o comando de insert para o comando de delete e select tendo em conta a sintaxe de cada um.

if(isset($_POST['VerDados']))
{
  $Tabela=$_POST['Tabela'];
  $sql ="SHOW columns from ".$Tabela;
  $result = $dbo->query($sql);
  $sql1 = "DELETE FROM'".$Tabela."' WHERE id = $Id
           LIMIT 1";


 SQL_Exec ($dbo, $sql1);
 
}
?>

Já tentei fazer assim, e não me aparece nada no compilador.

 

Share this post


Link to post
Share on other sites
M6

O comando SQL que tens não faz nada para o teu comando delete. Se estás a usar a coluna Id não faz sentido obteres todas as colunas de uma tabela para, na verdade, nem sequer usares esse resultado.

O teu comando tem o "LIMIT 1" a mais (devias ver o que os comandos fazem antes de os usares), fora isso o comando funciona perfeitamente, desde que o $id corresponda a uma linha na tabela onde estás a tentar eliminar registos.


10 REM Generation 48K!
20 INPUT "URL:", A$
30 IF A$(1 TO 4) = "HTTP" THEN PRINT "400 Bad Request": GOTO 50
40 PRINT "404 Not Found"
50 PRINT "./M6 @ Portugal a Programar."

 

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.