How do I take a data on one page and put it on another?

Asked

Viewed 138 times

1

I need to take a data sent by the user through the GET method on one page, put this data in the database and, on another page, I need to read this data from the database and write to the page. In case I have a table called comandos where I have two columns nome and valor and I want to take the dice from the field valorwhich is on the same line where the field nome contains the value LED1

I tried that, but it didn’t work:

Page 1

mysql_connect("u541106066_estad","u541106066_ctp","jkf45s6f4sdf4");
$sSQL="Update comandos Set valor='$_GET_["LED1"]' Where nome='LED1'";
mysql_db_query("u541106066_estad",$sSQL);

Page 2

mysql_connect("u541106066_estad","u541106066_ctp","81GDYC2lDC");
$sql = 'SELECT valor FROM comandos';
echo "led=$ql";
  • 1

    Failed to execute sql.

  • how so ? Could exemplify

  • I made an example for you Carlos, take a look... with the execution and fetch_array()

  • 1

    Another thing, what is the temporal aspect of this data? It should be saved in a relational database? ?

  • There is error in the first code. I do not have much knowledge in my sql. What I need exactly is to put a piece of data on one page and output it on another page. These pages will be accessed from different customers. One will send the data and the other will pick it up. The data in question should be kept even when customers disconnect. This process must happen in real time and continuously.

  • Time to migrate to PDO :)

  • To make SELECT you have to use the function mysql_fetch_array, in the example you are just printing the query value, it is thus in the code?

Show 2 more comments

2 answers

1


What you want seems very simple to me, you can do it this way:

  1. Create a class (file: Database.php) to access the database using PDO, as in the example below:
class Database {

 private static $servidor = 'localhost'; // Servidor, no caso poderia ser também localhost
 private static $usuario = 'u541106066_ctp'; // usuário do banco de dados
 private static $senha = 'jkf45s6f4sdf4'; // senha do banco de dados
 private static $banco = 'u541106066_estad'; // nome do banco de dados
 private static $instance = null;

 //inicia a conexão
  public static function getConnection() {
     if (!self::$instance instanceof PDO) {
         try {
             self::$instance = new PDO('mysql:host=' . 
             self::$servidor . ';dbname=' . 
             self::$banco, 
             self::$usuario, 
             self::$senha, 
             array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION));
         } catch (PDOException $exc) {
           echo "Erro ao conectar :: {$exc->getMessage()}";
         }
     } 
  return self::$instance;
  }

//metodo para trazer vários resultados
  public function fetchAll($query) {
     $con = self::getConnection();
     $stmt = $con->prepare($query);
     $this->execute($stmt);

     if ($stmt->rowCount()) {
        return $stmt->fetchAll(PDO::FETCH_OBJ);
     } else {
       return false;
     }
  }

//metodo para trazer um resultado
 public function fetch($query) {
    $con = self::getConnection();
    $stmt = $con->prepare($query);
    $this->execute($stmt);

    if ($stmt->rowCount()) {
         return $stmt->fetch(PDO::FETCH_OBJ);
    } else {
      return false;
    }
 }

 //executa o PDO
  public function execute(PDOStatement $stmt, array $data = null) {
     try {
           if (isset($data)) {
               $stmt->execute($data);
           } else {
           $stmt->execute();
           }
     } catch (PDOException $exc) {
       echo $exc->getTraceAsString();
       var_dump($exc->getMessage());
     }
  }

 //metodo para inserir e atualizar dados
  public function save($sql, array $data) {

     $con = self::getConnection();
     $stmt = $con->prepare($sql);
     $this->execute($stmt, $data);

     if ($stmt->rowCount()) {
        return true;
     } else {
       return false;
     }
  }

}
  1. Use the class to take the database data, create a file of type index.php and in this file do the following:

//primeiro você precisa incluir a classe
require_once("Database.php");

//agora você precisa instanciá-la:
$conexao = new Database();

/*
Agora basta chamar o método para a query que você quer buscar no seu banco, através da requisição GET.
- no seu caso /index.php?id=1
- Armazene numa variável o valor que receber
*/
$requisicao_consulta = (isset($_GET['id'])) ? $_GET['id'] : null;
//para post, salva a id no campo hidden 
$valor_id = ($_POST['id'] != '') ? $_POST['id'] : null;
//requisição de inclusão/atualização
$requisicao_save = (isset($_POST['action'])) ? $_POST['action'] : null;

if ($requisicao_save != null) {

    $values = [
       'id' => $valor_id,
       'val1' => $_POST['valor1'],
       'val2' => $_POST['valor2'],
       'val3' => $_POST['valor3'],
    ];

} else {

    if ($requisicao_consulta != null) {
        $data = $conexao->fetch("SELECT id,
                                        valor1,
                                        valor2,
                                        valor3 
                                 FROM   comandos
                                 WHERE  id='$requisicao_consulta'");
    }

    $message = "- Preencha o formulário abaixo:\n<br>";

    if (isset($_GET['success-insert'])) {
       $message .= "Dados cadastrados com sucesso!\n<br>";
    }

    if (isset($_GET['success-update'])) {
       $message .= "Dados atualizados com sucesso!\n<br>";
    }
}

//agora basta chamar a query com a requisição

if ($requisicao_save == 'insert' && $valor_id == null) {
   $execute = $conexao->save("INSERT INTO comandos
                              (id, valor1, valor2, valor3)
                              VALUES (:id,:val1,:val2,:val3);",
                              $values);
   header('Location: index.php?success-insert');
}

if ($requisicao_save == 'update' && $valor_id != null) {
   $execute = $conexao->save("UPDATE comandos SET
                              valor1=:val1,
                              valor2=:val2,
                              valor3=:val3
                              WHERE id:id;",
                              $values);
  header('Location: index.php?success-update');
}

//a variável $data representa os dados (em objeto) que contém o conjunto de valores trazido pela similaridade da sua requisição, como não é uma coleção, "não" utilizamos $conexao->fetchAll("..."), onde teríamos uma coleção em array. Desta maneira, vamos construir um formulário para preencher os dados que serão alterados (vou escrever em php mesmo, depois você refatora se achar melhor):  

$inputs = [];

$action = 'insert';

if (!empty($data)) {

    $action = 'update';
    foreach ($data as $key => $dado) {
    $inputs["<label>{ucwords($key)}</label>\n<input type=\"text\" value=\"{$dado->$key}\" name=\"{$key}\">"];
    }

    $inputs["<input type=\"hidden\" name=\"action\" value=\"update\">"];

} else {

    for ($i=1; $i <= 3; $i++) {
        $inputs["<label>Valor {$i}</label>\n<input type=\"text\" value=\"\" name=\"valor{$i}\">"];
    }

}
$inputs["<input type=\"hidden\" name=\"action\" value=\"{$action}\">"];
$inputs["<input type=\"hidden\" name=\"id\" value=\"{$valor_id}\">"];
$inputs["<input type=\"submit\" value=\"Salvar\">"];
echo "<div id=\"mensagem\" class=\"msg\">{$message}</div>\n";
echo "<form method=\"post\" action=\"{$_SERVER['SCRIPT_NAME']}\" name=\"send\" id=\"send\">\n";
echo implode("\n<br />", $inputs);
echo "</form>";
 

0

On page 2, do it like this:

$res = mysql_db_query($sql);

while ($row = mysql_fetch_assoc($res)) {
    echo $row['valor'];
}
  • I also suggested this, however, he is using the PDO. What we can not do this way.

Browser other questions tagged

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