1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

Tabelas mysql em branco

Discussão em 'Web Development' iniciada por Frango., 26 de Novembro de 2008. (Respostas: 13; Visualizações: 759)

  1. Frango.

    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: 26 de Novembro de 2008
  2. Armadillo

    Armadillo Folding Member

    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
     
  3. Frango.

    Frango. Power Member

    E como faço para validar se os campos estão vazios ou não? É que quanto menos ficheiros melhor ;)
     
  4. Armadillo

    Armadillo Folding Member

    Tens que validar com if's as variaveis que recebes do form.

    porquê? ;)
     
  5. fil79

    fil79 Power Member

  6. Frango.

    Frango. Power Member

    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?

    Porque não gosto de ter vários ficheiros para um só script quando posso usar só 1 :)
     
  7. fil79

    fil79 Power Member

    e depois perdes o triplo do tempo para resolver problemas que não terias se fizeses em dois ficheiros, como parece ser o caso.....
     
  8. Frango.

    Frango. Power Member

    gosto das coisas bem feitas, independentemente do trabalho que elas dão :)
     
  9. Armadillo

    Armadillo Folding Member

    essa forma de fazeres as coisas é errada.
     
  10. fil79

    fil79 Power Member

    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
     
  11. skandal

    skandal Power Member

    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......
     
  12. Frango.

    Frango. Power Member

    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?

    ;)
     
  13. geoblast

    geoblast Power Member

    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.
     
  14. naoliveira

    naoliveira Power Member

    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.

     

Partilhar esta Página