Hello, I've done a questionnaire, and it's returning the following error:
Error: SQLSTATE[21S01]: Insert value list does not match column list: 1136 Column count doesn't match value count at row 1
Warning: Cannot modify header information - headers already sent by (output started at /home/swdig809/public_html/class.conexao.php:2) in /home/swdig809/public_html/pesquisa/envia.php on line 35
I believe this is because some of the questions are answered with RADIO
How do I structure the database to save this data type? and how should I handle this in code.
Follow the files:
form.php
<!DOCTYPE html>
<!--[if lt IE 7]> <html class="no-js lt-ie9 lt-ie8 lt-ie7"> <![endif]-->
<!--[if IE 7]> <html class="no-js lt-ie9 lt-ie8"> <![endif]-->
<!--[if IE 8]> <html class="no-js lt-ie9"> <![endif]-->
<!--[if gt IE 8]><!--> <html class="no-js"> <!--<![endif]-->
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<title></title>
<meta name="description" content="">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="../css/bootstrap.min.css">
<style>
body {
padding-top: 50px;
padding-bottom: 20px;
}
</style>
<link rel="stylesheet" href="../css/bootstrap-theme.min.css">
<link rel="stylesheet" href="../css/main.css">
<link rel="stylesheet" href="form.css">
<script src="../js/vendor/modernizr-2.6.2-respond-1.1.0.min.js"></script>
</head>
<body>
<form id="form-pesquisa" action="envia.php">
<h1>Cadastro Empresa</h1>
<label for="nome_empresa">Empresa:</label>
<input type="text" placeholder="Nome da Empresa" name="nome_empresa" id="nome_empresa"/><br>
<label for="nome_resp">Nome Responsavel:</label>
<input type="text" placeholder="Nome da pessoa" name="nome_resp" id="nome_resp"/><br>
<label for="funcao">Função:</label>
<input type="text" placeholder="Nome da Empresa" name="funcao" id="funcao"/><br>
<hr>
<h2>PERGUNTAS</h2>
<h2>A EMPRESA É:</h2><br><br>
<input type="radio" name="tipo" id="comercio" value="comercio"/>
<label for="comercio">Comércio</label>
<hr>
<input type="radio" name="tipo" id="industria" value="industria"/>
<label for="industria">Industria</label>
<hr>
<input type="radio" name="tipo" id="servicos" value="serviços"/>
<label for="servicos">Serviços</label>
<hr>
<br><br><hr><hr><hr><hr><br>
<h2>SEU PUBLICO É:</h2><br><br>
<input type="radio" name="publico" id="empresasEcomercios" value="empresasEcomercios"/>
<label for="empresasEcomercios">Comércio / Empresas</label><hr>
<input type="radio" name="publico" id="consumidorFinal" value="Consumidor Final"/>
<label for="consumidorFinal" >Consumidor final</label><hr>
<input type="radio" name="publico" id="theBoth" value="Um pouco dos dois"/>
<label for="theBoth">Um pouco dos dois</label><hr>
<br><br><hr><hr><hr><hr><br>
<h2>SEU PUBLICO COSTUMA USAR A INTERNET?</h2><br><br>
<input type="radio" name="publicoInternet" id="SimBastante" value="Bastante"/>
<label for="SimBastante">Sim, bastante.</label><hr>
<input type="radio" name="publicoInternet" id="moderadamente" value="Moderadamente"/>
<label for="moderadamente" >Sim, moderadamente.</label><hr>
<input type="radio" name="publicoInternet" id="naoUsa" value="Não usa"/>
<label for="naoUsa">Não, não usa.</label><hr>
<input type="radio" name="publicoInternet" id="naoSei" value="Não sei"/>
<label for="naoSei">Não sei.</label><hr>
<br><br><hr><hr><hr><hr><br>
<h2>QUANTOS CONCORRENTES DIRETOS VOCÊ TEM?</h2><br><br>
<input type="radio" name="concorrentes" id="mais10" value="+ de 10"/>
<label for="mais10">+ de 10.</label><hr>
<input type="radio" name="concorrentes" id="mais5" value="+ de 5"/>
<label for="mais5" >+ de 5.</label><hr>
<input type="radio" name="concorrentes" id="menos5" value="Não usa"/>
<label for="menos5">- de 5.</label><hr>
<input type="radio" name="concorrentes" id="naoSei2" value="Não sei"/>
<label for="naoSei2">Não sei.</label><hr>
<br><br><hr><hr><hr><hr><br>
<h2>SEUS CONCORRENTES ESTÃO ONLINE?</h2><br><br>
<input type="radio" name="concorrentesInternet" id="SimBastante3" value="Bastante"/>
<label for="SimBastante3">Sim, bastante.</label><hr>
<input type="radio" name="concorrentesInternet" id="moderadamente3" value="Moderadamente"/>
<label for="moderadamente3" >Sim, moderadamente.</label><hr>
<input type="radio" name="concorrentesInternet" id="naoUsa3" value="Não usa"/>
<label for="naoUsa3">Não, não usa.</label><hr>
<input type="radio" name="concorrentesInternet" id="naoSei3" value="Não sei"/>
<label for="naoSei3">Não sei.</label><hr>
<br><br><hr><hr><hr><hr><br>
<h2>VOCÊ COSTUMA INVESTIR EM MARKETING?</h2><br><br>
<input type="radio" name="investirMarketing" id="SimBastante4" value="Bastante"/>
<label for="SimBastante4">Sim, bastante.</label><hr>
<input type="radio" name="investirMarketing" id="moderadamente4" value="Moderadamente"/>
<label for="moderadamente4" >Sim, moderadamente.</label><hr>
<input type="radio" name="investirMarketing" id="naoUsa4" value="Não investe"/>
<label for="naoUsa4">Não, não invisto.</label><hr>
<br><br><hr><hr><hr><hr><br>
<h2>Se sim, qual tipo. Se não, porque ?:</h2><br>
<input type="text" placeholder="Inserir texto" name="qualeporque" id="qualeporque"/>
<br><br><hr><hr><hr><hr><br>
<h2>SE INTERESSA PELO ASSUNTO?</h2><br><br>
<input type="radio" name="interesse" id="SimBastante5" value="Bastante"/>
<label for="SimBastante5">Sim, bastante.</label><hr>
<input type="radio" name="interesse" id="moderadamente5" value="Moderadamente"/>
<label for="moderadamente5" >Sim, moderadamente.</label><hr>
<input type="radio" name="interesse" id="naoUsa5" value="Não se interessa"/>
<label for="naoUsa5">Não, se interessa.</label><hr>
<input type="radio" name="interesse" id="naoSei5" value="Não sei"/>
<label for="naoSei5">Não sei.</label><hr>
<br><br><hr><hr><hr><hr><br>
<h2>GOSTARIA DE CONHECER OS SERVIÇOS E PREÇOS DA SW DIGITAL?</h2><br><br>
<input type="radio" name="proposta" id="SimBastante6" value="Pode Mandar"/>
<label for="SimBastante6">Sim, pode me mandar.</label><hr>
<input type="radio" name="proposta" id="moderadamente6" value="Pode Mandar, mas me ligue"/>
<label for="moderadamente6" >Sim, mas não tenho tempo.</label><hr>
<input type="radio" name="proposta" id="naoUsa6" value="Não enviar"/>
<label for="naoUsa6">Não, não quero.</label><hr>
<br><br><hr><hr><hr><hr><br>
<h2>Porque ?:</h2><br>
<input type="text" placeholder="Inserir texto" name="porqueinteresse" id="porqueinteresse"/>
<br><br><hr><hr><hr><hr><br>
<br><br><hr><hr><hr><hr><br>
<h2>Email ?:</h2><br>
<input type="email" placeholder="email" name="email" id="email"/>
<br><br><hr><hr><hr><hr><br>
<button type="submit">ENVIAR</button>
</form>
CLASS.CONEXAO.PHP:
<?php
class Conexao {
private $data = array();
//variavel da classe Base
protected $pdo = null;
public function __set($name, $value){
$this->data[$name] = $value;
}
public function __get($name){
if (array_key_exists($name, $this->data)) {
return $this->data[$name];
}
$trace = debug_backtrace();
trigger_error(
'Undefined property via __get(): ' . $name .
' in ' . $trace[0]['file'] .
' on line ' . $trace[0]['line'],
E_USER_NOTICE);
return null;
}
//método que retorna a variável $pdo
public function getPdo() {
return $this->pdo;
}
//método construtor da classe
function __construct($pdo = null) {
$this->pdo = $pdo;
if ($this->pdo == null)
$this->conectar();
}
//método que conecta com o banco de dados
public function conectar() {
$local = "localhost";
$user = "root";
$pass = "";
$basename = "diner210";
try {
$this->pdo = new PDO("mysql:host=$local;dbname=$basename",
"$user",
"$pass",
array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8"));
} catch (PDOException $e) {
print "Error!: " . $e->getMessage() . "<br/>";
die();
}
}
//método que desconecta
public function desconectar() {
$this->pdo = null;
}
public function select($statement){
$pdo = $this->getPdo();
$sth = $pdo->prepare($statement);
$sth->execute();
$result = $sth->fetchAll();
return $result;
}
}
? >
and SEND.PHP
<?php
//inclui as bibliotecas
require_once('../class.conexao.php');
//faz a canexão
$pdo = new Conexao();
try {
$pdo = new PDO('mysql:host=localhost;dbname=swdig809_pesquisa', 'swdig809_denis', '123123', array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8"));
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$pdo = $pdo->prepare('INSERT INTO empresas VALUES(DEFAULT, :nome_empresa, :nome_resp, :funcao, :tipo, :publico, :publicoInternet, :concorrentes, :concorrentesInternet, :investirMarketing, :interesse, :email)'); //Preparando os dados
$pdo->bindValue( ':nome_empresa' , $_REQUEST['nome_empresa']); // recebendo dados do formulario
$pdo->bindValue( ':nome_resp' , $_REQUEST['nome_resp']);
$pdo->bindValue( ':funcao' , $_REQUEST['funcao']);
$pdo->bindValue( ':tipo' , $_REQUEST['tipo']);
$pdo->bindValue( ':publico' , $_REQUEST['publico']);
$pdo->bindValue( ':publicoInternet' , $_REQUEST['publicoInternet']);
$pdo->bindValue( ':concorrentes' , $_REQUEST['concorrentes']);
$pdo->bindValue( ':concorrentesInternet' , $_REQUEST['concorrentesInternet']);
$pdo->bindValue( ':investirMarketing' , $_REQUEST['investirMarketing']);
$pdo->bindValue( ':interesse' , $_REQUEST['interesse']);
$pdo->bindValue( ':email' , $_REQUEST['email']);
$pdo->execute(); // salvando no banco
print $pdo->rowCount(); // retorna quantas linhas foram alteradas.
} catch(PDOException $e) {
echo 'Error: ' . $e->getMessage();}
header('location: index.php');
?>