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

Editar dados(BD) atraves de formulario

Discussão em 'Web Development' iniciada por darkult, 10 de Abril de 2009. (Respostas: 16; Visualizações: 1882)

  1. darkult

    darkult Power Member

    Boas, grande povo.

    Gostaria de por no site que estou a fazer um sistema como o que tem aqui no forum para editar os dados:
    [​IMG]
    Se alguem me puder ajudar, ficaria muito grato.

    Pelo que posso imaginar, sao iframe?? Ou estou enganado??
     
  2. AwakE

    AwakE Banido

    O Access faz isso.

    Se queres alterar um servidor de base de dados estilo SQL Server ou Oracle, tens de fazer uma aplicação em .Net, Java ou PHP.
     
  3. darkult

    darkult Power Member

    Estou a trabalhar com PHP
     
  4. .:Red Dragon:.

    .:Red Dragon:. Power Member

    Boas!

    É fácil fazer isso. Primeiro o fórmulário (em HTML).

    Código:
    <input name="campo1" type="text" id="campo1" />&nbsp;<INPUT TYPE="submit" name="inserir" VALUE="inserir">
    Depois o código em PHP...

    PHP:
    $nome $_POST[campo1];

    mysql_query("UPDATE `nome_da_bd`.`tabela` SET `campo` = '$nome'") or die(mysql_error());
    Depois podes adicionar mais umas cenas na linha do MySQL, por exemplo um "WHERE" para utilizares id's...

    Qualquer coisa mais é só perguntares.
     
  5. darkult

    darkult Power Member

    Isto ja eu sei. Mas eu queria que ele so fizesse o UPDATE onde houve dados, pois se fizer um UPDATE geral, ele apagar os dados antigo, e fica o campo em branco.

    Ou então que fizesse o UPDATE individualmente, talvez com IF mas assim ficaria muitas condiçoes.

    Eu queria é como o sistema aqui do forum.
     
  6. .:Red Dragon:.

    .:Red Dragon:. Power Member

    Como assim? Não percebi muito bem...
     
  7. darkult

    darkult Power Member

    Conheces o sistema do forum???

    No meu site actualmente para mudar os dados, tens que preencher tudo.
    Ele depois faz isto
    PHP:
    $update mysql_query("UPDATE usuarios_vip SET nome='$nome', email='$email', cel='$cel', sexo='$sexo', curso='$curso'  WHERE login='$login'") or die(mysql_error());
    Mas eu queria que nao houvesse necessidade de preencher tudo. Por exemplo, quero mudar o email, nao tenho que preencher o nome, curso, sexo, etc...

    Pois aqui no forum se quiser mudar a cidade, ele apenas mudar a cidade e nao muda os outros dados.
     
  8. .:Red Dragon:.

    .:Red Dragon:. Power Member

    Sim, agora percebi... Podes fazer isso de várias maneiras. Agora ocorrem-me duas. Uma por if's como já disseste ou então vais buscar os valores de cada campo à base de dados ao abrir a página e os valores ficam já "preenchidos" dentro das caixa de texto. Ou seja, ao abrir a página, os valores já estão nas caixas de texto.
     
  9. darkult

    darkult Power Member

    e ponho isso no value= certo??? Boa ideia.
     
  10. iCore7

    iCore7 Power Member

    Eu dou uma dica:

    PHP:
    <?php

    $actualizar 
    = array();

    if (isset(
    $_POST['nome']) && ($nome $_POST['nome']) != $fetch_assoc['nome'])
    $actualizar[] = 'nome = ' mysql_real_escape_string($nome);

    if (isset(
    $_POST['email']) && ($email $_POST['email']) != $fetch_assoc['email'] && email_valido($email))
    $actualizar[] = 'email ' mysql_real_escape_string($email);

    if (
    count($actualizar) > 0)
    mysql_query('UPDATE SET usuarios_vip ' implode(', '$actualizar) . ' WHERE login = ' $login) or die(mysql_error());

    header('Location: ' $_SERVER['PHP_SELF']);
    exit();

    ?>
    Se não perceberes alguma coisa do que está aí, avisa :Whatever:
     
  11. darkult

    darkult Power Member

    Não conheço isto, o que faz???
     
  12. iCore7

    iCore7 Power Member

    Qual é parte do código que não percebes ?
     
  13. darkult

    darkult Power Member

    Podes dar uma explicação por alto do codigo todo....
     
  14. iCore7

    iCore7 Power Member

    PHP:
    <?php

    // obtém via http get o id do utilizador (http://www.exemplo.com?id=)
    $id = (isset($_GET['id']) ? (int)$_GET['id'] : 0);

    // selecciona os campos desse determinado id..
    $query mysql_query('SELECT nome, email FROM usuarios_vip WHERE id = ' mysql_real_escape_string($id)) or die(mysql_error());

    // se não existir nenhuma linha no registo com o iD obtido..
    if (mysql_num_rows == 0)
    exit(
    'Não existe nenhum utilizador com este iD!');

    // obtém os resultados dos campos..
    $fetch_assoc mysql_fetch_assoc($query);

    // definimos a variável como uma array (conjunto de valores)..
    $actualizar = array();

    // Aqui só irá actualizar se:
    // A super-variável $_POST['nome'] estiver definida;
    // For diferente do campo obtido pelo query (se for diferente do que já está registado na bd (ie: tenho o meu nome definido na bd, ele só irá alterar se eu alterar o campo do nome no input));

    if (isset($_POST['nome']) && ($nome $_POST['nome']) != $fetch_assoc['nome'])
    $actualizar[] = 'nome = ' mysql_real_escape_string($nome);

    // Aqui só irá actualizar se:
    // A super-variável $_POST['nome'] estiver definida;
    // For diferente do campo obtido pelo query (se for diferente do que já está registado na bd (ie: tenho o meu email definido na bd, ele só irá alterar se eu alterar o campo do email no input));
    // Se o email for válido (necessitas da função);

    if (isset($_POST['email']) && ($email $_POST['email']) != $fetch_assoc['email'] && email_valido($email))
    $actualizar[] = 'email ' mysql_real_escape_string($email);

    // se houver campos para alterar..
    if (count($actualizar) > 0)

    // actualiza
    // o implode irá juntar os campos separados por uma vírgula
    mysql_query('UPDATE SET usuarios_vip ' implode(', '$actualizar) . ' WHERE id = ' mysql_real_escape_string($id)) or die(mysql_error());

    // volta para uma página
    header('Location: pagina.php');
    exit();

    ?>
     
  15. darkult

    darkult Power Member

    Obrigado pela explicação.

    Mais uma duvida e se eu tiver isto:
    <select name="sexo" id="sexo"><option value="Masculino" selected>Masculino</option>
    <option value="Feminino">Feminino</option></select>
    Como é que posso fazer para que vá buscar o valor ja guardado na base de dados, e mostre ele no select, nao ter que seleccionar.
     
  16. iCore7

    iCore7 Power Member

    Qualquer coisa assim..

    PHP:
    $sexos "<option value=0></option>\n";

    $array = array(

                  array(
    "id" => 1"sexo" => "Masculino"),
                  array(
    "id" => 2"sexo" => "Feminino"),
                  array(
    "id" => 3"sexo" => "Não tenho a certeza"),
                  
             );
                  
    foreach (
    $array as $sexo) {  
        
        
    $sexos .= "<option value=".$sexo["id"]."" . ($fetch_assoc["sexo"] == $sexo["id"] ? " selected" "") .  ">".$sexo["sexo"]."</option>\n"
        
    }          

    echo 
    "<select name='sexo'>\n$sexos\n</select>";
     
    Última edição: 11 de Abril de 2009
  17. skullrazor

    skullrazor [email protected] Member

    Já tive esse problema e resolvi-o de uma maneira muito simples! Fiz da seguinte maneira, na form onde vais inserir os dados para actualizar (caixas de texto, etc.) adicionas um <input> "escondido", assim:
    Código:
    <input type="hidden" name="process" value="time1" />
    
    Depois o botão que ira actualizar as informações na base de dados terá de ficar noutra form! Uma form apenas com o botão e com o mesmo <input> "escondido" que atrás, mas com a value diferente, assim:
    Código:
    <input type="hidden" name="process" value="time2" />
    
    Depois usando php, apenas fazes um if assim:
    PHP:
    if ($_POST['process'] == "time2") {
    $update mysql_query("UPDATE usuarios_vip SET nome='$nome', email='$email', cel='$cel', sexo='$sexo', curso='$curso'  WHERE login='$login'") or die(mysql_error());  
    }
    E assim apenas se carregares no botão para actualizar as informações é que elas serão alteradas, caso não carregues continuarão iguais. Atenção que na condição do if, onde está "time2" será a value do segundo <input> "escondido", o da form do botão!

    Espero que isto ajude também :)

    Cumps
     

Partilhar esta Página