Tabelas mysql em branco

Frango.

Power Member
Boas.

Tenho um código php que permite adicionar parcerias facilmente, está tudo bem tirando o problema que venho cá pedir para me ajudarem..

Ao abrir a página sem preencher nada, adiciona um valor em branco à mysql, sem eu carregar no botão "Enviar". Ou seja, mal abro à página já está a inserir um valor.

Como resolvo isto? Será problema do php ou das tabelas mysql? Aqui está o código php:

Código:
<?php
require('inc/config.php');
$nome = $_POST['nome'];
$url = $_POST['url'];
$banner = $_POST['banner'];
mysql_query("INSERT INTO parc (url, nome, banner) VALUES ('$url', '$nome', '$banner')");

include ('inc/menu.php');
?>

<form name="guest" action="parceria.php" method="post">
<table>
    <tr><td width="75" height="25"><div align="left"><span class="style1">URL do banner:</span> </div></td><td width="275" height="25"><div align="left"><input type="text" name="nome" size="25" class="style2"></div></td></tr>
    <tr><td width="75" height="25"><div align="left"><span class="style1">Nome:</span> </div></td><td width="275" height="25"><div align="left"><input name="url" type="text" id="url" size="25" class="style2"></div></td></tr>
    <tr><td height="25"><div align="left"><span class="style1">Endereço:</span> </div></td><td height="25"><div align="left"><input name="banner" type="text" id="banner" size="25" class="style2"></div></td></tr>
 <tr>
    <td height="25">&nbsp;</td>
    <td>
        <div align="left">
    <input type="submit" value="Enviar" class="style2"></div></td></tr>
    </table>
  </p>
  </form>
</body>
</html>

E aqui está o código mysql:

Código:
CREATE TABLE `parc` (
  `id` bigint NOT NULL auto_increment,
  `nome` text NOT NULL,
  `url` text NOT NULL,
  `banner` varchar(10000) NOT NULL,
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=15;
Gostava imenso de obter respostas que me ajudassem, porque perciso disto resolvido até ao fim de semana.:)

Obrigado a todos ;)
 
Última edição:
repara o que estás a executar logo no inicio da pagina:
Código:
<?php
require('inc/config.php');
$nome = $_POST['nome'];
$url = $_POST['url'];
$banner = $_POST['banner'];
[B][COLOR=Red]mysql_query("INSERT INTO parc (url, nome, banner) VALUES ('$url', '$nome', '$banner')");[/COLOR][/B]
Tas a inserir os valores na base de dados (que no load estão vazios) ;)
tens que passar este codigo para outra pagina e mudar o action do form, para essa pagina.
Também podes manter essa estrutura do ficheiro de teres a inserção logo no inicio (coisa que nao aconselho) e validares se os campos estão vazios ou nao. Consoante essa validação, inseres ou nao os dados na base de dados.

cumps
 
aproveitei um script que já tinha aqui e tentei adaptar para o script das parcerias mas não adiciona nada na sql.. o código é este:

Código:
<?php
require_once "inc/config.php";

$reg = "yes";
$ip = $_SERVER['REMOTE_ADDR'];
?>
<html>
<head>
<title>Contacto</title>
</head>
<body>
<?php
$msg = "";

if (isset($_POST['submit'])) {
$msg ="<p class=\"style2 style3\">A parceria " . $_POST['url']. " foi adicionada!</p>";
if (empty($_POST['banner'])) {
$msg = "Dados Incompletos!";
$reg = "no";
}
if (empty($_POST['url'])) {
$msg = "Dados Incompletos!";
$reg = "no";
}
if (empty($_POST['nome'])) {
$msg = "Dados Incompletos!";
$reg = "no";
}
echo "<p class=\"style2 style3\">" . $msg . "</p>";

if ($reg == "yes") {
    $sql = "INSERT INTO parc(banner, url, nome)
            VALUES('{$_POST['banner']}', '{$_POST['url']}', '{$_POST['nome']}'";
    mysql_query($sql);
}
}
?>
<form action="parceria.php" method="POST">
<table>
<tr>
    <td width="75" height="25"><div align="left"><span class="style1">URL:</span> </div></td><td width="275" height="25"><div align="left"><input type="text" name="banner" id="banner" value="" class="style2" size="48"></div></td></tr>
<tr><td height="25"><div align="left"><span class="style1">Nome:</span> </div></td><td height="25"><div align="left"><input type="text" name="url" id="url" value="" class="style2" size="48"></div></td></tr>
<tr><td height="25"><div align="left"><span class="style1">Banner:</span> </div></td><td height="25"><div align="left"><input type="text" name="nome" id="nome" value="" class="style2" size="48"></div></td></tr>

  <tr>
    <td height="25">&nbsp;</td>
    <td>&nbsp;</td>
  </tr>
 <tr>
    <td height="25">&nbsp;</td>
    <td>
      
        <div align="left">
<input type="submit" name="submit" value="Enviar" class="style2">
<input name="B2" type="reset" class="style2" value="Repor todos" /></div></td></tr>
</table>
</form>
Que está mal ai?

É que quanto menos ficheiros melhor ;)

porquê? ;)

Porque não gosto de ter vários ficheiros para um só script quando posso usar só 1 :)
 
e depois perdes o triplo do tempo para resolver problemas que não terias se fizeses em dois ficheiros, como parece ser o caso.....
 
não sei quem te disse que para um formulário estar bem feito deve o html do form e a linguagem de servidor para inserir os registos estar na mesma página...essa teoria é no minimo discutivel...a mim sempre me ensinaram (desde o prof de universidade a colegas de trabalho ) que é boa prática dividir os scripts..se te dá mais jeito a ti juntares tudo à molhada tudo bem, não significa é que fique melhor do que outras formas...bom trabalho
 
Só venho reforçar a ideia dos dois ultimos posts..... é a maior cagada da história teres no mesmo ficheiro o script de inserção/alteração de dados da bd e o html do form, por alguma razão a tag form tem um atributo action......
 
Ok, se vocês aconselham a não ter tudo na mesma página tudo bem, vocês é que têm a experiência :D

Bom, já tenho numa outra página, mas há um problema.. É que tenho uma pasta chamada inc/ e que não queria que ao verem o código vissem o <form action="inc/addparceria.php" .. existe alguma maneira de não mostrar o form action sem mudar o file de dir?

;)
 
Ok, se vocês aconselham a não ter tudo na mesma página tudo bem, vocês é que têm a experiência :D

Bom, já tenho numa outra página, mas há um problema.. É que tenho uma pasta chamada inc/ e que não queria que ao verem o código vissem o <form action="inc/addparceria.php" .. existe alguma maneira de não mostrar o form action sem mudar o file de dir?

;)

Algum motivo especial para não se ver que usas a pasta «inc»?? Seja o que for que uses, vai gerar html que aponta para a pasta.
 
Eu acho que a melhor opção é híbrida, isto é, a fom deve chamar a própria página mas as funções para essa página devem estar num ficheiro separado, que é incluído na página inicial.

Só venho reforçar a ideia dos dois ultimos posts..... é a maior cagada da história teres no mesmo ficheiro o script de inserção/alteração de dados da bd e o html do form, por alguma razão a tag form tem um atributo action......
 
Back
Topo