Ir para conteúdo

POWERED BY:

Arquivado

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

Káliman Borges

[Resolvido] Atualizar diversos registros de uma vez... como numa

Recommended Posts

Boa tarde galera do imasters...

estou precisando fazer um esquema para atualizar todos os registros de uma tabela de uma vez só... como se fosse uma planilha msmo...

a tabela não terá mais que 30 registros.. por isso não ficará absurdamente pesado...

estive pesquisando em diversos fóruns, inclusive aqui.. e encontrei um ou outro exemplo... nenhum muito esclarecedor....

cheguei no seguinte desenvolvimento:

 

 

<?php 
require_once('../Connections/config.php');
mysql_select_db($database_config, $config);
parse_str($_SERVER['QUERY_STRING']);
$pegardobanco = "SELECT * FROM dominios";
$res = mysql_query($pegardobanco);
echo "<form id='form1' name='form1' method='post' action=''>
  <table width='400' border='0' align='center'>
	<tr>
	  <th scope='col'>Nome</th>
	  <th scope='col'>Valor</th>
	  <th scope='col'>Link</th>
	  <th scope='col'>Ordem</th>
	</tr>";
while ($linha = mysql_fetch_array($res)) {
printf("<tr>
	  <td><input type='text' name='dm_id[]' value='$linha[dm_id]' /><input type='text' name='dm_nome[]' value='$linha[dm_nome]' size='32' /></td>
	  <td><input type='text' name='dm_valor[]' value='$linha[dm_valor]' size='32' /></td>
	  <td><input type='text' name='dm_link[]' value='$linha[dm_link]' size='32' /></td>
	  <td><input type='text' name='dm_ordem[]' value='$linha[dm_ordem]' size='16' id='dm_ordem' /></td>
	</tr>");
}
// para capturar o total de aluno
$totalregistros = $_POST['dm_id'];
echo "<tr>
	  <td> </td>
	  <td> </td>
	  <td><input name='inserir' type='hidden' value='01' /></td>
	  <td><div align='center'>
		  <input type='submit' value='Editar dominio' />
	  </div></td>
	</tr>
  </table>
</form>";


if (isset($_POST["inserir"]) == "01") {
for($i=0; $i < count($totalregistros); $i++ ) {
	 $codDominio = array_shift($_POST['dm_id']);
	 $nomeDominio = array_shift($_POST['dm_nome']);
	 $valorDominio = array_shift($_POST['dm_valor']);
	 $linkDominio = array_shift($_POST['dm_link']);
	 $ordemDominio = array_shift($_POST['dm_ordem']);
	 // o ideal seria fazer a verificacao para saber se a nota pode ser inserida, mas isso você pode fazer via javascript na hora do cadastro, só não se esqueça de form injection
	 //$sql = "UPDATE dominios SET (dm_id, dm_nome, dm_valor, dm_link, dm_ordem) values ( ".$codDominio.", '".$nomeDominio."', '".$valorDominio."', '".$linkDominio."', '".$ordemDominio."');
	$sql ="UPDATE dominios SET dm_nome = '$nomeDominio', dm_valor = '$valorDominio', dm_link = '$linkDominio', dm_ordem = '$ordemDominio'"; 
	$result1 = mysql_query($sql, $config) or die(mysql_error());
	echo "Dados atualizados com sucesso! <br />";
	echo "<a href=exibeDominio.php>Voltar</a>";
}
}

acontece que quando abro o script, já dá de cara essa msg "Notice: Undefined index: dm_id in c:\program files\easyphp1-8\www\vzhost\admin\testeexibedominio.php on line 24"

 

e caso eu execute o submit, ele devolve:

 

Dados atualizados com sucesso! 
VoltarDados atualizados com sucesso! 
VoltarDados atualizados com sucesso! 
Voltar

só q ele pega apenas o post da última linha e atualiza em todos o registros...

o q preciso fazer??

agradeço desde já!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cria um if para o submit e coloca o códido de acesso ao banco dentro e ve se resolve!!!

 

if(isset($_POST['Submit'])){

//....................códido

}

Compartilhar este post


Link para o post
Compartilhar em outros sites

consegui chegar nessa solução...

mas agora tá dando outro erro....

alguma boa alma que domine php poderia me ajudar???

 

 

<?php 
require_once('../Connections/config.php');
mysql_select_db($database_config, $config);
$sql = "SELECT * FROM dominios";
$res = mysql_query($sql);
if (isset($_POST["inserir"]) <> "01") {
echo "<form id='form1' name='form1' method='post' action=''>
  <table width='400' border='1' align='center'>
	<tr>
	  <th scope='col'>Nome</th>
	  <th scope='col'>Valor</th>
	  <th scope='col'>Link</th>
	  <th scope='col'>Ordem</th>
	</tr>";
while ($linha = mysql_fetch_array($res)) {
printf("<tr>
	  <td><input type='text' name='dm_nome[$linha[dm_id]]' value='$linha[dm_nome]' size='32' /></td>
	  <td><input type='text' name='dm_valor[$linha[dm_id]]' value='$linha[dm_valor]' size='32' /></td>
	  <td><input type='text' name='dm_link[$linha[dm_id]]' value='$linha[dm_link]' size='32' /></td>
	  <td><input type='text' name='dm_ordem[$linha[dm_id]]' value='$linha[dm_ordem]' size='16' id='dm_ordem' /></td>
	</tr>");

}
echo "<tr>
	  <td> </td>
	  <td> </td>
	  <td><input name='inserir' type='hidden' value='form1' /> </td>
	  <td><div align='center'>
		  <input type='submit' value='Editar dominio' />
	  </div></td>
	</tr>
  </table>";
}
else {
while ($linha = mysql_fetch_array($res)) {
$postnome = $_POST["dm_nome[$linha[dm_id]]"];
$postvalor = $_POST["dm_valor[$linha[dm_id]]"];
$postlink = $_POST["dm_link[$linha[dm_id]]"];
$postordem = $_POST["dm_ordem[$linha[dm_id]]"];
$udpategp = "UPDATE dominios SET dm_nome = '$postnome', dm_valor = '$postvalor', dm_link = '$postlink', dm_ordem = '$postordem' WHERE dm_id = '$linha[dm_id]'";
$result1 = mysql_query($udpategp, $config) or die(mysql_error());
}
echo "</form>Dados atualizados com sucesso! <br />";
echo "<a href=exibeHospedagem.php>Voltar</a>";

}
?>

tipo... ele gera o formulário normal.. acrescentando o número de linhas e os dados como deve ser mesmo...

só para constar, na minha tabela existem 5 campos:

 

DM_ID (chave primária)

DM_NOME

DM_VALOR

DM_LINK

DM_ORDEM

 

ele monta um form dessa maneira...

Imagem Postada

obs.: os campos estão vazios porque o bd está assim... a primeira parte de recolher valores do banco está funcionando normalmente...

 

só q quando eu mando executar o submit.. ele devolve o seguinte erro:

Notice: Undefined index: dm_nome[2] in c:\program files\easyphp1-8\www\vzhost\admin\teste2exibedominio.php on line 36

Notice: Undefined index: dm_valor[2] in c:\program files\easyphp1-8\www\vzhost\admin\teste2exibedominio.php on line 37

Notice: Undefined index: dm_link[2] in c:\program files\easyphp1-8\www\vzhost\admin\teste2exibedominio.php on line 38

Notice: Undefined index: dm_ordem[2] in c:\program files\easyphp1-8\www\vzhost\admin\teste2exibedominio.php on line 39

Notice: Undefined index: dm_nome[3] in c:\program files\easyphp1-8\www\vzhost\admin\teste2exibedominio.php on line 36

Notice: Undefined index: dm_valor[3] in c:\program files\easyphp1-8\www\vzhost\admin\teste2exibedominio.php on line 37

Notice: Undefined index: dm_link[3] in c:\program files\easyphp1-8\www\vzhost\admin\teste2exibedominio.php on line 38

Notice: Undefined index: dm_ordem[3] in c:\program files\easyphp1-8\www\vzhost\admin\teste2exibedominio.php on line 39

Notice: Undefined index: dm_nome[4] in c:\program files\easyphp1-8\www\vzhost\admin\teste2exibedominio.php on line 36

Notice: Undefined index: dm_valor[4] in c:\program files\easyphp1-8\www\vzhost\admin\teste2exibedominio.php on line 37

Notice: Undefined index: dm_link[4] in c:\program files\easyphp1-8\www\vzhost\admin\teste2exibedominio.php on line 38

Notice: Undefined index: dm_ordem[4] in c:\program files\easyphp1-8\www\vzhost\admin\teste2exibedominio.php on line 39
Dados atualizados com sucesso! 
Voltar

 

é como se não funcionasse o $_POST[]...

o q está errado??

:(

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá, não seria problema no seu if que faz entrar no código com os UPDATES?

 

Tente trocar:

 

if (isset($_POST["inserir"]) <> "01") {

para:

 

if ($_POST["inserir"] <> "form1") {

Compartilhar este post


Link para o post
Compartilhar em outros sites

Boa tarde!

troquei o if por esse que me indicou e aconteceu o seguinte:

 

Antes do form, apareceu a mensagem de erro: "Notice: Undefined index: inserir in c:\program files\easyphp1-8\www\vzhost\admin\teste2exibedominio.php on line 6"

 

e qndo cliquei no submit.... continuaram as mensagens de Undefined index...

 

tá complicado! rsrsrs

Compartilhar este post


Link para o post
Compartilhar em outros sites

consegui concertar....

era as [] q tava enguiçando.... só tirar q funcionou normal... mudei de

 

while ($linha = mysql_fetch_array($res)) {
printf("<tr>
	  <td><input type='text' name='dm_nome[$linha[dm_id]]' value='$linha[dm_nome]' size='32' /></td>
	  <td><input type='text' name='dm_valor[$linha[dm_id]]' value='$linha[dm_valor]' size='32' /></td>
	  <td><input type='text' name='dm_link[$linha[dm_id]]' value='$linha[dm_link]' size='32' /></td>
	  <td><input type='text' name='dm_ordem[$linha[dm_id]]' value='$linha[dm_ordem]' size='16' id='dm_ordem' /></td>
	</tr>");

}

para:

while ($linha = mysql_fetch_array($res)) {
printf("<tr>
	  <td><input type='text' name='dm_nome$linha[dm_id]' value='$linha[dm_nome]' size='32' /></td>
	  <td><input type='text' name='dm_valor$linha[dm_id]' value='$linha[dm_valor]' size='32' /></td>
	  <td><input type='text' name='dm_link$linha[dm_id]' value='$linha[dm_link]' size='32' /></td>
	  <td><input type='text' name='dm_ordem$linha[dm_id]' value='$linha[dm_ordem]' size='16' id='dm_ordem' /></td>
	</tr>");

}

e mudei nos $_POST [] tbm... agora tá funcionando normalmente....

que estranho.. não era pra dar esse tipo de erro..

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.