Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Robson Barros da Rocha

Site configurável com SQL

Recommended Posts

Boa tarde amigos.

 

Mais uma vez venho incomodá-los, mas, eu queria muito saber se é possível criar um formulário que mostrasse os valores do que está registrado na tabela do SQL. Por exemplo:

<input name="site_name" type="text" value="<?php echo $exibe["nameSite"]; ?>"/>

Na visualização deste campo, gostaria que ele mostrasse o valor da tabela site_config do meu Banco de Dados. Em seguida, se eu quisesse modificar o valor do campo, ao clicar em Salvar, este seria alterado no Banco de Dados, sem precisão de eu ficar abrindo toda hora o arquivo no FTP para editar o título do site.

 

Alguém saberia como fazer tal coisa? Eu cheguei a ler o artigo sobre o $_POST, mas até hoje não consigo fazê-o funcionar. :(

 

Grato pela ajuda. ;)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Claro que sim!

  • Faça o select do banco.
  • Se retornar algum registro, faça um foreach/while
  • Dentro deste laço acima, coloque este input com o valor que quiser receber do banco.

 

Neste caso, acredito ser algo assim (ex:)

$sql = mysql_query("SELECT * FROM site WHERE id = 1");
if($sql){
    while ($exibe = mysql_fetch_assoc($sql)) {
    	echo "<input name=\"site_name\" type=\"text\" value=\"".$exibe["nameSite"]."\"/>";
    }
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Hm... Boa tarde amigo.

 

Seria algo mais ou menos assim, então?

<?php
$server = "localhost";
$usuario = "user";
$banco   = "bd";
$senha = "";
// conecta ao banco de dados
$conexao = mysqli_connect($server, $usuario, $senha);
mysqli_select_db($conexao, $banco);
if(!$conexao) {
    echo mysqli_error();
    exit;
}

if ($_POST["update"] == "Salvar") {
    $sa_name = mysqli_real_escape_string($conexao, $_POST["sa_name"]);
    $resultado = mysqli_query($conexao, "update config_web set sa_name='$sa_name' WHERE id='1'") or die (mysqli_error());
    echo "SALVO!";
} else {
    $resultado = mysqli_query($conexao, "select * from config_web");
    $exibe = mysqli_fetch_array($resultado, MYSQLI_ASSOC);
?>

<form method="post">
    <table width="400" border="0" cellspacing="1" cellpadding="2">
        <tr>
            <td width="100">Nome do site: </td>
            <td><input name="sa_name" type="text" id="sa_name" value="<?php echo $exibe["sa_name"]; ?>"></td>
        </tr>
        <tr>
            <td width="100"> </td>
            <td> </td>
        </tr>
        <tr>
            <td width="100"> </td>
            <td><input name="update" type="submit" id="update" value="Salvar"></td>
        </tr>
    </table>
</form>

Eu testei aqui, mas, quando salva ele não faz o "update".

Compartilhar este post


Link para o post
Compartilhar em outros sites

Daí é outro problema. Não tem nada a ver com sua questão lá em cima.

 

Dê um var_dump no $_POST, e veja se $_POST['update'] está vindo como "Salvar".

 

PS: Nunca vi passar valor de input type=submit dar certo. Talvez eu esteja errado, mas acredito que dessa maneira não funcionará.


Outra coisa, você não executou o laço como mostrei no post #2.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se for fazer como mencionou no post 2, eu vou ter que colocar tudo dentro do próprio PHP, e pra mim é complicado isso.

 

Já no modelo que apresentei acima é um que eu tinha a muito tempo e que deixei arquivado. Enquanto eu esperava por sua resposta, eu estava testando-o.

 

Não existe outra forma sem que eu precise colocar o HTML dentro do echo?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tem.

 

Mas você vai ter que fazer o laço do mesmo jeito.

Tente jogando em variáveis para usar no decorrer do HTML.

<?php
$server = "localhost";
$usuario = "user";
$banco   = "bd";
$senha = "";
// conecta ao banco de dados
$conexao = mysqli_connect($server, $usuario, $senha);
mysqli_select_db($conexao, $banco);
if(!$conexao) {
    echo mysqli_error();
    exit;
}

if ($_POST["update"] == "Salvar") {
    $sa_name = mysqli_real_escape_string($conexao, $_POST["sa_name"]);
    $resultado = mysqli_query($conexao, "update config_web set sa_name='$sa_name' WHERE id='1'") or die (mysqli_error());
    echo "SALVO!";
} else {
    $resultado = mysqli_query($conexao, "select * from config_web");
    //$exibe = mysqli_fetch_array($resultado, MYSQLI_ASSOC);
	$fetch = mysqli_fetch_array($resultado,MYSQLI_ASSOC);
	foreach ($fetch as $exibe) {
		 $nomeSite = $exibe["sa_name"];
		 break;
	}
}
?>

<form method="post">
    <table width="400" border="0" cellspacing="1" cellpadding="2">
        <tr>
            <td width="100">Nome do site: </td>
            <td><input name="sa_name" type="text" id="sa_name" value="<?php echo $nomeSite; ?>"></td>
        </tr>
        <tr>
            <td width="100"> </td>
            <td> </td>
        </tr>
        <tr>
            <td width="100"> </td>
            <td><input name="update" type="submit" id="update" value="Salvar"></td>
        </tr>
    </table>
</form>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Com este código ele me retorna um erro:

 

Notice: Undefined index: update on line 15

Warning: Illegal string offset 'sa_name' on line 24

 

Apesar de me retornar estes dois erros, ele mostra apenas o primeiro caractere do valor sa_name :|

 

Sobre fazer o laço... Bem, o laço seria para mostrar os dados do BD, porém, isso já é feito no código da mensagem 3. O único problema que tenho é que não faz o update. :(

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então a visualização da página no post #3 está funcionando? Então, a principio o tópico tá resolvido.

 

Sobre a outra temática (update não funcionar), você fez o que sugeri? Tente dar um var_dump($_POST) para ver o que retorna desse formulário aí, pra saber se está entrando na condição do $_POST["update"] == "Salvar".

Compartilhar este post


Link para o post
Compartilhar em outros sites

Boa tarde!

 

Sim, aqui está amigo:

http://i38.servimg.com/u/f38/18/76/69/60/site10.jpgsite10.jpg

 

As configurações do SQL já estão okay. O que basicamente gostaria mesmo é a possibilidade de alterar os dados usando o PHP como bem expliquei na primeira mensagem. Ao abrir a página, mostrasse o mesmo valor que está no SQL, e quando fosse salvo (um novo valor, por exemplo), mudasse também no SQL.

 

Abraços!

Compartilhar este post


Link para o post
Compartilhar em outros sites
var_dump($_POST)

Coloque isso no seu código abaixo do if de conexão. Aí, tente salvar de novo. Teóricamente, é para retornar tudo que vem de $_POST, e com isso sabermos e irmos debugando seu código aos poucos e entender o que está acontecendo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu fiz com o var_drump e retornou um erro. Seria assim, certo?

<?php
// definições de host, database, usuário e senha
$server = "";
$usuario = "";
$banco   = "";
$senha = "";
// conecta ao banco de dados
$conexao = mysqli_connect($server, $usuario, $senha);
mysqli_select_db($conexao, $banco);
if(!$conexao) {
    echo mysqli_error();
    exit;
}

if var_dump($_POST) {
    $sa_name = mysqli_real_escape_string($conexao, $_POST["sa_name"]);
    $resultado = mysqli_query($conexao, "update config_web set sa_name='$sa_name' WHERE id='1'") or die (mysqli_error());
    echo "SALVO!";
} else {
    $resultado = mysqli_query($conexao, "select * from config_web");
    $exibe = mysqli_fetch_array($resultado, MYSQLI_ASSOC);
?>

<form method="post">
    <table width="400" border="0" cellspacing="1" cellpadding="2">
        <tr>
            <td width="100">Nome do site: </td>
            <td><input name="sa_name" type="text" id="sa_name" value="<?php echo $exibe["sa_name"]; ?>"></td>
        </tr>
        <tr>
            <td width="100"> </td>
            <td> </td>
        </tr>
        <tr>
            <td width="100"> </td>
            <td><input name="update" type="submit" id="update" value="Salvar"></td>
        </tr>
    </table>
</form>
<?php 
}
?>

A aplicação é adicionada no local correto?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não, tá errado!

 

Tenta assim, velhinho!

<?php

$server = "localhost";
$usuario = "user";
$banco   = "bd";
$senha = "";
// conecta ao banco de dados
$conexao = mysqli_connect($server, $usuario, $senha);
mysqli_select_db($conexao, $banco);
if(!$conexao) {
    echo mysqli_error();
    exit;
}
echo var_dump($_POST);
die();

....

Compartilhar este post


Link para o post
Compartilhar em outros sites

1. se estou entendendo bem, se o seu problema é atualizar um registro, então tente inverter as instruções sql, o procedimento padrão é selecionar 1 determinado registro, para depois alterá-lo (sua sql "select" não está fazendo isso, observe).

2. se for isso mesmo sugiro ainda que peça para mudarem o titulo do seu tópico.

3. recomendo também criar uma coluna chave primária, caso ela não exista.

Dicas boas:

http://www.linhadecodigo.com.br/artigo/2975/comandos-basicos-em-sql-insert-update-delete-e-select.aspx
http://www.linhadecodigo.com.br/artigo/75/principais-instrucoes-em-sql.aspx

Compartilhar este post


Link para o post
Compartilhar em outros sites

Mas, se eu seguir este modelo @"Fernando C" eu consigo fazer a atualização dos registros sem atualizar a página. Ficaria muito complexo eu ter que... criar uma página com o formulário e outra que recebe e atualiza os dados do SQL. O bom mesmo se fosse numa só, e é isso que este php faz.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.