Ir para conteúdo

POWERED BY:

Arquivado

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

Ricardo.Sp

[Resolvido] fazer update de varios registros

Recommended Posts

olá pessoal

to com um probleminha aqui para atualizar alguns dados

mais ocorre o seguinte problema:

ele so atualiza o ultimo registro do form ...

qual será o erro ai ?

segue o codigo:

<script type="text/javascript">
function changePageSize(value) {
window.location = "?p=ver_menu&valor="+value;
} 
</script>
<?php
if(isset($_POST['add'])) {
if(isset($_POST['ordem']) and ($_POST['ordem'] != "")) {

       $field          = $_POST; 
       $count          = count($field[ordem]); 
       for($i = 0; $i < $count; $i++){ 
$sql	= "UPDATE {$prefixdb}menu_op SET
ordem = {$field['ordem'][$i]}
WHERE id = {$field['ids'][$i]}"; 
       } 
if(@mysql_query($sql)){
$erro[] = "Link Ordenado com Sucesso";
} else {
$erro[] = "Erro ao Ordenado o Menu ";
} 
} else {
$erro[] = "Todos os campos são obrigatórios";
} }
?>
<div class="conteudo">
<?php
if (isset($erro)){
  for($i=0;$i<count($erro);$i++){
   print'<li>'.$erro[$i];
  } 
}
?>
<div class="add_conteudo">

</div>
<div class="titulo_conteudo">
   Organizar Menu
</div>
<br />
Selecione um Menu:
<br />
<select name="select" id="select" onchange="changePageSize(this.options[this.selectedIndex].value);">
      <option value="0">Escolha um Menu</option>
       <?php
		 $sql2 = "SELECT * FROM {$prefixdb}menu ORDER BY posicao ASC";
        $qr2 = mysql_query($sql2) or die(mysql_error());
        while($ln2 = mysql_fetch_assoc($qr2)){
           echo '<option value="'.$ln2['id'].'">'.$ln2['titulo'].'</option>';
        } 
     ?>
</select>
<br />
<br />
<br />
<?php
if(isset($_GET['valor'])){
$idmenu = $_GET['valor'];	
?>
<table width="100%" border="0" cellspacing="0" cellpadding="0"><form name="editar" action="<?php print($_SERVER['PHP_SELF']); ?>?p=ver_menu&valor=<?=$idmenu;?>&editar" method="post">
 <tr bgcolor="#999999">
   <td><strong>#</strong></td>
   <td><strong>Titulo</strong></td>
   <td><strong>Status</strong></td>
   <td><strong>Ordem</strong></td>
   <td><strong>Id</strong></td>
 </tr>
<?php $sql = mysql_query("SELECT * FROM {$prefixdb}menu_op WHERE id_menu='$idmenu' AND id_sub='0' ORDER BY ordem ASC ");
if(mysql_num_rows($sql) == 0){ ?>
<tr>
  <td  colspan="5" align="center"><br />
    Sem Link's Registrado.<br /></td></tr>
<?php        
} else {
$z=0;
while($dados = mysql_fetch_array($sql)){
	$z++;
?>
     <tr >        <td><?=$z;?></td>
       <td><?=$dados[titulo];?></td>
       <td>-</td>
       <td><input name="ordem[]" type="text" size="1" maxlength="2" /></td>
        <td><?=$dados[id];?><input type="hidden" name="ids[]" value="<?=$dados[id];?>"></td>
     </tr>
     <?php  } } ?>
     <tr>
     <td  colspan="5" align="center">
     <br />
     <input type="submit" name="add" value="Ordenar">
     </td>
     </tr>
     </form>
   </table>
<?php
} else {
print'<div class="organizar_conteudo">Esolha primeiro um Menu</div>';
}
?>
<?php
include("foot.php");
?> 
</div>
</div>
</body>
</html>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Faça diferente:

foreach($_POST['ordem'] as $valor)
{
  foreach($_POST['ids'] as $keys)
  {
     $Upd = "update set campo = '$valor' where id = $keys";
     mysql_query($upd);
  }
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Vlw ai Justin, pela ajuda mais eu alterei conforme você citou.

mais continua salvando so do ultimo POST

 

ue preciso para ordenar os registro do DB...

Compartilhar este post


Link para o post
Compartilhar em outros sites

tah sim

 

e mostra msg com sucesso,

agora repetiu varias vezes:

 

 

"Status alterado com Sucesso

Status alterado com Sucesso

Status alterado com Sucesso

Status alterado com Sucesso

Status alterado com Sucesso

Status alterado com Sucesso

Status alterado com Sucesso

Status alterado com Sucesso

Status alterado com Sucesso

Status alterado com Sucesso

Status alterado com Sucesso

Status alterado com Sucesso

Status alterado com Sucesso

Status alterado com Sucesso

Status alterado com Sucesso

Status alterado com Sucesso

Status alterado com Sucesso

Status alterado com Sucesso

Status alterado com Sucesso

Status alterado com Sucesso

Status alterado com Sucesso

Status alterado com Sucesso

Status alterado com Sucesso

Status alterado com Sucesso

Status alterado com Sucesso

Status alterado com Sucesso

Status alterado com Sucesso

Status alterado com Sucesso

Status alterado com Sucesso

Status alterado com Sucesso

Status alterado com Sucesso

Status alterado com Sucesso

Status alterado com Sucesso

Status alterado com Sucesso

Status alterado com Sucesso

Status alterado com Sucesso

Status alterado com Sucesso

Status alterado com Sucesso

Status alterado com Sucesso

Status alterado com Sucesso

Status alterado com Sucesso

Status alterado com Sucesso

Status alterado com Sucesso

Status alterado com Sucesso

Status alterado com Sucesso

Status alterado com Sucesso

Status alterado com Sucesso

Status alterado com Sucesso

Status alterado com Sucesso"

 

num é pq tem 2 foreach ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

São 2 foreach pq são 2 campos arrays.

<?=$dados[id];?>

 

O que vai dentro dos colchetes tem que ter aspas.

<?=$dados['id'];?>

 

Poste como está agora seu código.

Compartilhar este post


Link para o post
Compartilhar em outros sites

São 2 foreach pq são 2 campos arrays.

<?=$dados[id];?>

 

O que vai dentro dos colchetes tem que ter aspas.

<?=$dados['id'];?>

 

Poste como está agora seu código.

 

 

aquii:

<script type="text/javascript">
function changePageSize(value) {
window.location = "?p=ver_menu&valor="+value;
} 
</script>
<?php
if(isset($_GET['status'])){
$status	= formatDados($_GET['status']);	
$ids	= formatDados($_GET['ids']);
//
$sql	= "UPDATE {$prefixdb}menu_op SET
status='$status'
WHERE id=$ids";
if(@mysql_query($sql)){
$sucesso[] = "Status alterado com Sucesso";
} }
?>
<?php
if(isset($_POST['add'])) {
if(isset($_POST['ordem']) and ($_POST['ordem'] != "")) {

foreach($_POST['ordem'] as $valor) 
{ 
  foreach($_POST['ids'] as $keys) 
  { 
$sql = "UPDATE {$prefixdb}menu_op SET
ordem = $valor
WHERE id = $keys";
if(@mysql_query($sql)){
$sucesso[] = "Ordem alterado com Sucesso";
}

} }

} else {
$erro[] = "Todos os campos são obrigatórios";
} }
?>
<div class="conteudo">
<?php
if (isset($erro)){
print'<div class="erro_conteudo">';
  for($i=0;$i<count($erro);$i++){
   print'<li>'.$erro[$i];
  } 
print"</div>"; }
?>
<?php
if (isset($sucesso)){
print'<div class="sucesso_conteudo">';
  for($i=0;$i<count($sucesso);$i++){
   print'<li>'.$sucesso[$i];
  } 
  print"</div>"; }
?>
<div class="add_conteudo">

</div>
<div class="titulo_conteudo">
   Organizar Menu
</div>
<br />
Selecione um Menu:
<br />
<select name="select" id="select" onchange="changePageSize(this.options[this.selectedIndex].value);">
      <option value="0">Escolha um Menu</option>
       <?php
		 $sql2 = "SELECT * FROM {$prefixdb}menu ORDER BY posicao ASC";
        $qr2 = mysql_query($sql2) or die(mysql_error());
        while($ln2 = mysql_fetch_assoc($qr2)){
           echo '<option value="'.$ln2['id'].'">'.$ln2['titulo'].'</option>';
        } 
     ?>
</select>
<br />
<br />
<br />
<?php
if(isset($_GET['valor'])){
$idmenu = $_GET['valor'];	
?>
<table width="100%" border="0" cellspacing="0" cellpadding="0"><form name="editar" action="<?php print($_SERVER['PHP_SELF']); ?>?p=ver_menu&valor=<?=$idmenu;?>&editar" method="post">
 <tr bgcolor="#999999">
   <td><strong>#</strong></td>
   <td><strong>Titulo</strong></td>
   <td><strong>Status</strong></td>
   <td><strong>Ordem</strong></td>
   <td><strong>Id</strong></td>
 </tr>
<?php $sql = mysql_query("SELECT * FROM {$prefixdb}menu_op WHERE id_menu='$idmenu' AND id_sub='0' ORDER BY ordem ASC ");
if(mysql_num_rows($sql) == 0){ ?>
<tr>
  <td  colspan="5" align="center"><br />
    Sem Link's Registrado.<br /></td></tr>
<?php        
} else {
$i=0;
$z=0;
while($dados = mysql_fetch_array($sql)){
	if (($i%2)==0) {
	$bgcolor="#FFFFFF";
	} else { 
	$bgcolor="#e5e5e5";
	}
	$z++;
?>
     <tr bgcolor="<? echo $bgcolor; ?>" onmouseover="this.style.background='#cccccc' ; " onmouseout="this.style.background='<? echo $bgcolor; ?>' ; ">
       <td><?=$z;?></td>
       <td><?=$dados[titulo];?></td>
       <td><a href="?p=ver_menu&valor=<?=$idmenu?>&status=<?=($dados[status]=="S")?"N":"S";?>&ids=<?php print($dados[id]); ?>"><img src="imagens/status-<?=($dados[status]=="S")?"on":"off";?>.png" width="16" height="16" border="0" title="Alterar Status para <?=($dados[status]=="S")?"OFF":"ON";?>"/></a></td>
       <td><input name="ordem[]" type="text" size="1" maxlength="2" /></td>
        <td><?=$dados[id];?><input type="hidden" name="ids[]" value="<?=$dados[id];?>"></td>
     </tr>
     <?php $i++; } } ?>
     <tr>
     <td  colspan="5" align="center">
     <br />
     <input type="submit" name="add" value="Ordenar">
     </td>
     </tr>
     </form>
   </table>
<?php
} else {
print'<div class="organizar_conteudo">Esolha primeiro um Menu</div>';
}
?>
<?php
include("rodape.php");
?> 
</div>
</div>
</body>
</html>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Faça um :

 


echo '<pre>';
var_dump($POST['ordem']);

 

Veja o resultado, se tiver errado corrija.

 

ele imprimiu isso :

NULL

NULL

NULL

NULL

NULL

NULL

NULL

NULL

NULL

NULL

NULL

NULL

NULL

NULL

NULL

NULL

NULL

NULL

NULL

NULL

NULL

NULL

NULL

NULL

NULL

NULL

NULL

NULL

NULL

NULL

NULL

NULL

NULL

NULL

NULL

NULL

NULL

NULL

NULL

NULL

NULL

NULL

NULL

NULL

NULL

NULL

NULL

NULL

NULL

NULL

NULL

NULL

NULL

NULL

NULL

NULL

NULL

NULL

NULL

NULL

NULL

NULL

NULL

NULL

NULL

NULL

NULL

NULL

NULL

NULL

NULL

NULL

NULL

NULL

NULL

NULL

NULL

NULL

NULL

NULL

NULL

Compartilhar este post


Link para o post
Compartilhar em outros sites

Vai no php.ini e veja a linha:

 

Register_Globals = ON

Coloque OFF.

É preferível você atualizar no php.ini.

 

Ou coloque no começo do seu código isso:

ini_set ("register_globals", "off"); 

 

Teste novamente.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Vai no php.ini e veja a linha:

 

Register_Globals = ON

Coloque OFF.

É preferível você atualizar no php.ini.

 

Ou coloque no começo do seu código isso:

ini_set ("register_globals", "off"); 

 

Teste novamente.

 

no phpinfo()

já ta Off

 

confira:

http://olhonoflash.com/info.php

 

será que é configuração do php ?

ou do script mesmo ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara, não vi nada errado no código, no HTML do Form.

Mas

 

<form name="editar" action="/_painel/index.php?p=ver_menu&valor=1&editar" method="post"> 

Ele monta o Form assim devido ao PHP_SELF.

Substitua isso:

<form name="editar" action="<?php print($_SERVER['PHP_SELF']); ?>?p=ver_menu&valor=<?=$idmenu;?>&editar" method="post">

 

Por isso

 

<form name="editar" action="?p=ver_menu&valor=<?=$idmenu;?>&editar" method="post">

Compartilhar este post


Link para o post
Compartilhar em outros sites

siim

todas as outras funciona,

pra INSERIR, DELETE E UPDATE.

 

sempre pego outras como referencia

so essa q ñ está atualizando por que são varios registros.

ai no caso ele so altera no mysql do ultimo POST

e eu preciso muito pra organizar os link do menu e os modulos da pagina.

 

Justin, vlw pela ajuda

muitoo obrigadoo

eu resolvii aqui com while e contagem dos post

vlw mesmoo

 

Resolvido !

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.