Fóruns sobre PHP, JavaScript, HTML, MySQLi, jQuery, Banco de Dados, CSS


Moderador: web

 
Mais de 100 postagens
Mais de 100 postagens
Tópico Autor
Mensagens: 395
Sexo: Masculino
Localização: VOLTA REDONDA RJ
Contato:

Update de varios registros

22-05-2013 10:47

tirando como base aquele exemplo do joao e maria :

tb1
id - nome - idade
1 - joao - 20
2 - maria - 12
3 - paulo - 15
4 - marcos - 18

formulario :
$sql = mysql_query("SELECT * FROM tab1 ") or die (mysql_error()); echo "<h1> Alterar dados</h1>"; echo "<hr><br>"; echo "<form action='altera.php' method='post'>"; while ($linha=mysql_fetch_row($sql)){      $id=$linha["id"]; $nome=$linha["nome"]; $idade=$linha["idade"]; echo "<b>ID:</b> <input type='hidden' name='id[]' value='$id'><br>"; echo "<b>Nome:</b> $nome<br>"; echo "<b>Idade:</b> <input name='idade[]' type='text' value='$idade'><br>"; echo "<hr><br>"; } echo "<input type='submit' value='Alterar'>"; echo "</form>"; echo "<hr><br>";


altera.php
$id= $_POST['id'][$i]; $idade= $_POST['idade'][$i]; for ($i=0;$i< count($id);$i++){ $up = mysql_query("UPDATE tab1 SET idade = '$idade[$i]' WHERE id = '$id[$i]'") or die (mysql_error());       }  

Não consigo alterar , zera tudo .
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17587
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Update de varios registros

22-05-2013 11:08

O melhor é usar o foreach, como nesse exemplo abaixo, só que você vai alterar o checkbox pelo input text ou hidden.

<form actin="" method="POST"> 1 <input type="checkbox" name="opcao[]" value="1"> <br> 2 <input type="checkbox" name="opcao[]" value="2"> <br> 3 <input type="checkbox" name="opcao[]" value="3"> <br> <input type="submit" name="envio"> </form> <?php if(isset($_POST['envio'])) { foreach($_POST['opcao'] as $novas) { // retorna os valores selecionados $novas; } } ?>

0
A melhor hospedagem para o seu site HostGator!
 
Mais de 100 postagens
Mais de 100 postagens
Tópico Autor
Mensagens: 395
Sexo: Masculino
Localização: VOLTA REDONDA RJ
Contato:

Update de varios registros

22-05-2013 11:16

Antes mantinha idade = 0 em todos, mudei o while para mysql_fetch_array , mostra os dados , altera tudo para 1 agora , e mantem , não aceita outra alteração. sempre que atualizo , seta idade como 1
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17587
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Update de varios registros

22-05-2013 11:31

Segue um exemplo baseado no que deve ser gerado na sua consulta.

<?php echo "<form action='teste.php' method='post'>"; echo "<b>ID:</b> <input type='hidden' name='id[]' value='1'><br>"; echo "<b>Nome:</b> Pedro<br>"; echo "<b>Idade:</b> <input name='idade[]' type='text' value='20'><br>"; echo "<hr><br>"; echo "<b>ID:</b> <input type='hidden' name='id[]' value='2'><br>"; echo "<b>Nome:</b> Pedro<br>"; echo "<b>Idade:</b> <input name='idade[]' type='text' value='30'><br>"; echo "<hr><br>"; echo "<input type='submit' name='Alterar' value='Alterar'>"; echo "</form>"; if(isset($_POST['Alterar'])) { extract($_POST); foreach($id AS $ID) { echo "UPDATE tabela SET idade='0' WHERE id='$ID'<br />"; } } ?>

0
A melhor hospedagem para o seu site HostGator!
 
Mais de 100 postagens
Mais de 100 postagens
Tópico Autor
Mensagens: 395
Sexo: Masculino
Localização: VOLTA REDONDA RJ
Contato:

Update de varios registros

22-05-2013 11:40

Resolvido.

$atual = $_POST; for($i=0; $i<count($atual); $i++){                  $id= $atual['id'][$i]; $idade= $atual['idade'][$i]; $up = mysql_query("UPDATE tab1 SET idade = '$idade' WHERE id = '$id'") or die (mysql_error());  

0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17587
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Update de varios registros

22-05-2013 11:41

;)
0
A melhor hospedagem para o seu site HostGator!
 
Mais de 100 postagens
Mais de 100 postagens
Tópico Autor
Mensagens: 395
Sexo: Masculino
Localização: VOLTA REDONDA RJ
Contato:

Update de varios registros

22-05-2013 12:05

:@

Fui fazer teste com mais itens , aconteceu algo que eu nunca vi , listo todos os itens , ou no caso 4 ou 6, para teste tenho 6 itens inclusos , só altera os 3 primeiros ???? :swear:

Agora que não entendi bulufas !!
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17587
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Update de varios registros

22-05-2013 12:43

Você fez pelo for, com base nessa contagem: count($atual). Dá um echo e veja qual número está retornando. Não deve estar completando todos inputs.

Tenta como recomendei, pelo foreach, usando como base o array do input.
0
A melhor hospedagem para o seu site HostGator!
 
Mais de 100 postagens
Mais de 100 postagens
Tópico Autor
Mensagens: 395
Sexo: Masculino
Localização: VOLTA REDONDA RJ
Contato:

Update de varios registros

23-05-2013 12:35

Desculpe pela demora de resposta , ontem depois do almoço desliguei meus equipamentos e fui descansar um pouco .... zzzzz .... tava precisando

Não consegui acertar com foreach , fiz com while :

if(isset($_POST)){ $count = count($_POST['id']);  $i = 0;  while ($i < $count) {  $id = $_POST['id'][$i];  $idade = $_POST['idade'][$i];  $query = mysql_query ("UPDATE tab1 SET idade = '$idade' WHERE id = '$id'") or die (mysql_error()); ++$i;  } } 



Não sei se é o mais certo mas esta funcionando.
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17587
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Update de varios registros

23-05-2013 12:40

Pode ser usado também. :)
0
A melhor hospedagem para o seu site HostGator!
 
Mais de 100 postagens
Mais de 100 postagens
Tópico Autor
Mensagens: 395
Sexo: Masculino
Localização: VOLTA REDONDA RJ
Contato:

Update de varios registros

23-05-2013 19:24

Desculpe web , mas não fiquei satisfeito em não conseguir fazer com foreach .... estive pesquisando e estudando , retornando este para aprender mais ... olha só o q ta acontecendo ...

se eu colocar assim :
echo '<pre>';     print_r( $_POST );     echo '</pre>'; if ( isset( $_POST["Alterar"] ) ) { foreach( $_POST["id"] as $id ) { $idade= $_POST["idade"][$id];   $up = mysql_query("UPDATE tab1 SET idade = '$idade' WHERE id = '$id'") or die (mysql_error());  } } 

o print_r me retorna :
Array (     [id] => Array         (             [0] => 1             [1] => 2             [2] => 3             [3] => 4             [4] => 5             [5] => 6         )       [idade] => Array         (             [0] => 1             [1] => 2             [2] => 3             [3] => 4             [4] => 5             [5] => 6         )       [Alterar] => Alterar )

ja no banco acontece :
entendendo que : id => idade

1 => 2 | 2 => 3 | 3 => 4 | 4 => 5 | 5 => 6 | 6 => 0

ta pulando o primeiro e zerando o último. :geek:
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17587
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Update de varios registros

23-05-2013 19:38

O $_POST["idade"][$id];

[$id] não é a chave.

Tem que ser assim:

<?php $Id = Array(1,2,3,4,5); $Idade = Array(10,20,30,40,50); foreach( $Id as $id => $valor ) { echo "UPDATE tab1 SET idade = '{$Idade[$id]}' WHERE id = '$valor'<br />"; } ?>

0
A melhor hospedagem para o seu site HostGator!
 
Mais de 100 postagens
Mais de 100 postagens
Tópico Autor
Mensagens: 395
Sexo: Masculino
Localização: VOLTA REDONDA RJ
Contato:

Update de varios registros

24-05-2013 09:10

ok, 100% , vlw
0

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado