Ir para conteúdo
Fórum Script Brasil
  • 0

Atualizar diversos registros de uma vez.... como numa planilha...


Káliman Borges

Pergunta

Boa tarde pessoal... sou novato aqui no fórum....

e queria uma ajuda de vocês! =D

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>&nbsp;</td>
      <td>&nbsp;</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\site\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á!

Editado por Káliman Borges
Link para o comentário
Compartilhar em outros sites

2 respostass a esta questão

Posts Recomendados

  • 0

seguinte é simples do mesmo jeito qe você da while para exibir você vair dar while pra executar o comando de insert (sqL) a diferencaa é que nos campos de form você vai colocar name[] nos campos de form

Link para o comentário
Compartilhar em outros sites

  • 0

tá.. eu fiz igual você disse!

mas agora tá dando outro erro....

<?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>&nbsp;</td>
      <td>&nbsp;</td>
      <td><input name='inserir' type='hidden' value='form1' />&nbsp;</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... formyb7.jpg 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\site\admin\teste2exibedominio.php on line 36

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

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

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

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

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

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

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

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

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

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

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

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

o q está errado??

:(

Editado por Káliman Borges
Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,2k
    • Posts
      652k
×
×
  • Criar Novo...