Forum Pplware

Versão Completa: Publicar dados de um formulário numa base de dados MySQL
Está de momento a ver uma versão reduzida do nosso conteúdo. Ver versão completa com o formato adequado.
Olá a todos,




Sou muito novo na programação com base de dados, mas gostaria de me aventurar e criar uma ferramenta com recurso ao HTML, PHP e MySQL para poder controlar as minhas faturas.

A ideia seria ter um formulário com os dados da fatura e um botão Submeter que faria com que esses dados fossem publicados na base de dados.



Criei agora a página de comerciantes para os adicionar mas sugeriram-me usar PDO e prepared statements e fiquei com este código.



Código:
<?php
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "myDBPDO";

try {
    $conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);
    // set the PDO error mode to exception
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

    // prepare sql and bind parameters
    $stmt = $conn->prepare("INSERT INTO comerciantes (nif, comerciante, setor) 
    VALUES (:nif, :comerciante, :setor)");
    $stmt->bindParam(':nif', $nif);
    $stmt->bindParam(':comerciante', $comerciante);
    $stmt->bindParam(':setor', $setor);

    // insert a row
    $firstname = "John";
    $lastname = "Doe";
    $email = "john@example.com";
    $stmt->execute();

    // insert another row
    $firstname = "Mary";
    $lastname = "Moe";
    $email = "mary@example.com";
    $stmt->execute();

    // insert another row
    $firstname = "Julie";
    $lastname = "Dooley";
    $email = "julie@example.com";
    $stmt->execute();

    echo "Novo comerciante introduzido com sucesso!";
    }
catch(PDOException $e)
    {
    echo "O comerciante não foi introduzido. Tente novamente." . $e->getMessage();
    }
$conn = null;
?>


Mas aqui no código onde aparecem "// insert a row" e "// insert another row", vem preenchido com dados normais que vinham do tutorial e não estou a perceber a lógica. Não sei se os deva alterar, deixar nem o que mudar.

Fico a aguardar uma ajuda.



Cumprimentos,
mikeysantanaBig Grin
Eu acho que esse código vai dar erro já que na parte onde fazes bindParam tens as variáveis indefinidas para $nif, $sector e $comerciante.

A maneira correcta seria definir antes as variáveis que vão ser introduzidas por ex:

Código:
$nif = "1231231231212";
$comerciante = "XYZ";
$sector = "XYZ";

// prepare sql and bind parameters
$stmt = $conn->prepare("INSERT INTO comerciantes (nif, comerciante, setor) 
VALUES (:nif, :comerciante, :setor)");
$stmt->bindParam(':nif', $nif);
$stmt->bindParam(':comerciante', $comerciante);
$stmt->bindParam(':setor', $setor);

$stmt->execute();

onde diz "insert row" e "insert another row" podes apagar já que isso é se precisares de inserires múltiplos registos de uma vez o que acho que não é isso que pretendes. Se for basicamente repetes o processo acima as vezes que quiseres.

Hasta.
URL's de Referência