Foros del Web » Programando para Internet » PHP »

Como hago un update de varios registros ???

Estas en el tema de Como hago un update de varios registros ??? en el foro de PHP en Foros del Web. Tengo que hacer el update de un campo pero en varios registros a la vez, en la DB tengo un campo llamado DISPONIBLE en el ...
  #1 (permalink)  
Antiguo 05/06/2006, 22:49
 
Fecha de Ingreso: diciembre-2001
Ubicación: Mar del Plata
Mensajes: 203
Antigüedad: 22 años, 4 meses
Puntos: 0
Como hago un update de varios registros ???

Tengo que hacer el update de un campo pero en varios registros a la vez, en la DB tengo un campo llamado DISPONIBLE en el que tengo el valor "si" y mediante Radio Button quisiera que me permita cambiar el "si" por otro valor por ejemplo "no" como en el grafico....



pero no logro hacerlo lo unico que logre hasta ahora es que solo me cambie el primer registro pero no todos lo que cambie, es decir si cambio el valor de "si" del primer, tercer y cuarto registro por ejemplo solo me cambia el del primero y los otros no los toma, realmente no se como se hace !!!! Alguien con paciencia para explicarme !!! Desde ya gracias

Pues parece que se hacer updates "de a uno" pero no "masivos" jeje!!!
__________________
:) Fernando Dichiera (:
[email protected]
  #2 (permalink)  
Antiguo 05/06/2006, 22:56
 
Fecha de Ingreso: abril-2006
Ubicación: mexico
Mensajes: 287
Antigüedad: 18 años
Puntos: 2
mm no tienes u límite de tiempo?. que usas, pon parte de tu código y te será más fácil que te respondan.
  #3 (permalink)  
Antiguo 05/06/2006, 23:15
Avatar de Nefertiter  
Fecha de Ingreso: enero-2003
Ubicación: Rosario
Mensajes: 1.316
Antigüedad: 21 años, 3 meses
Puntos: 9
yo hice algo casi identico, pero utilice Ajax, es decir cada vez q se hacia click en un boton
mediante HTTPRequest, llamaba a la pagina actualizar.php?registro_id=X&campo=Y

y asi actualizaba, capaz te sirve lo q encuentres en el foro de ajax, capaz te sea muy complicado para esto, de todas maneras lo otro q podes hacer es

poner en el nombre de los radiobutton

name="disponible[REGISTRO_ID]"


entonces cuando lo procesas con array_keys($_POST['disponible']) ya sabes q valor va a cada ID
  #4 (permalink)  
Antiguo 05/06/2006, 23:30
 
Fecha de Ingreso: junio-2006
Ubicación: Jáltipan Veracruz, México
Mensajes: 150
Antigüedad: 17 años, 10 meses
Puntos: 1
A ver, en tu escipt tu tabla la imprimes con while de acuerdo a condicón y al número de registro, entonces para crear tus radios, lo vas a hacer con el for,cada grupo de 2 radios(si/no) debe tenere un nombre específico para poder manejarlo. por ejemplo en su lugar de impresión quedaría algo como esto

<td>
<?

// voy a asumir que $id es el valor de la primera columna aunque en la realidad
// casi siempre usamos el $row y sería algo $row[0],
// entonces en vez de colocar r$id serái r$row[0] esto es de acuerdo a como
//estés manejando tus variables.

echo"
<input type='radio' name='r$id' value='si' checked>si
<input type='radio' name='r$id' value='no'>no
";
?>

con ello obtienes nombres de acuerdo a su valor de identificador.
te recomiendo que coloque un contador en tu ciclo, digamos que lo llamamos $total, y al final antes del submit lo pases com hidden y te sea algo fácil, que daría así antes del submit:

<?
echo"
<input type='hideen' name='total' value='$total'>
";
?>
así logramos saber también cuantos elementos tenemos.

en el script de actualización hacemos lo siguiente, primero un ciclo desde 0 hasta total , vamos a ejemplificar con un for(opcional)
<?
for($i=0;$i<$total;$i++)
{
// sabemos que el radio empieza con r y finaliza con el valor del id

$valor="r".$i; // valor tiene un valor con el nombre de la variable

// entonces usamos las variables variables para obtener el valor
// esto es doble signo para decir que es una variable variable $$
//hacemos el update

mysql_query("UPDATE tabla disponible='$$valor' WHERE id='$i'", $conexion);
}

?>

solo copia y pega, claro que modifica lo que creas conveniente para decuarlo a tu programa.

Cualquier duda escribeme a [email protected] o en el messenger de hotmail [email protected]
  #5 (permalink)  
Antiguo 05/06/2006, 23:32
 
Fecha de Ingreso: diciembre-2001
Ubicación: Mar del Plata
Mensajes: 203
Antigüedad: 22 años, 4 meses
Puntos: 0
Aqui mi codigo

Solo que en vez de radio butons tiene textarea, pues en realidad lo que veo es que NO SE hacer un UPDATE MASIVO !!!??? pues solo me actualiza un solo registro, pordon por postear codigo generado por dreamweaver pero en el apuro era lo que tenia a mano...

Código PHP:
<?php require_once('Connections/fermdp14.php'); ?>
<?php
function GetSQLValueString($theValue$theType$theDefinedValue ""$theNotDefinedValue ""
{
  
$theValue = (!get_magic_quotes_gpc()) ? addslashes($theValue) : $theValue;

  switch (
$theType) {
    case 
"text":
      
$theValue = ($theValue != "") ? "'" $theValue "'" "NULL";
      break;    
    case 
"long":
    case 
"int":
      
$theValue = ($theValue != "") ? intval($theValue) : "NULL";
      break;
    case 
"double":
      
$theValue = ($theValue != "") ? "'" doubleval($theValue) . "'" "NULL";
      break;
    case 
"date":
      
$theValue = ($theValue != "") ? "'" $theValue "'" "NULL";
      break;
    case 
"defined":
      
$theValue = ($theValue != "") ? $theDefinedValue $theNotDefinedValue;
      break;
  }
  return 
$theValue;
}

$editFormAction $HTTP_SERVER_VARS['PHP_SELF'];
if (isset(
$HTTP_SERVER_VARS['QUERY_STRING'])) {
  
$editFormAction .= "?" $HTTP_SERVER_VARS['QUERY_STRING'];
}

if ((isset(
$HTTP_POST_VARS["MM_update"])) && ($HTTP_POST_VARS["MM_update"] == "form1")) {
  
$updateSQL sprintf("UPDATE nota SET Disponible=%s WHERE id=%s",
                       
GetSQLValueString($HTTP_POST_VARS['textfield'], "text"),
                       
GetSQLValueString($HTTP_POST_VARS['hiddenField'], "int"));

  
mysql_select_db($database_fermdp14$fermdp14);
  
$Result1 mysql_query($updateSQL$fermdp14) or die(mysql_error());

  
$updateGoTo "popo.php";
  if (isset(
$HTTP_SERVER_VARS['QUERY_STRING'])) {
    
$updateGoTo .= (strpos($updateGoTo'?')) ? "&" "?";
    
$updateGoTo .= $HTTP_SERVER_VARS['QUERY_STRING'];
  }
  
header(sprintf("Location: %s"$updateGoTo));
}

mysql_select_db($database_fermdp14$fermdp14);
$query_Recordset1 "SELECT * FROM nota";
$Recordset1 mysql_query($query_Recordset1$fermdp14) or die(mysql_error());
$row_Recordset1 mysql_fetch_assoc($Recordset1);
$totalRows_Recordset1 mysql_num_rows($Recordset1);

$maxRows_Recordset1 10;
$pageNum_Recordset1 0;
if (isset(
$HTTP_GET_VARS['pageNum_Recordset1'])) {
  
$pageNum_Recordset1 $HTTP_GET_VARS['pageNum_Recordset1'];
}
$startRow_Recordset1 $pageNum_Recordset1 $maxRows_Recordset1;

mysql_select_db($database_fermdp14$fermdp14);
$query_Recordset1 "SELECT * FROM nota ORDER BY id DESC";
$query_limit_Recordset1 sprintf("%s LIMIT %d, %d"$query_Recordset1$startRow_Recordset1$maxRows_Recordset1);
$Recordset1 mysql_query($query_limit_Recordset1$fermdp14) or die(mysql_error());
$row_Recordset1 mysql_fetch_assoc($Recordset1);

if (isset(
$HTTP_GET_VARS['totalRows_Recordset1'])) {
  
$totalRows_Recordset1 $HTTP_GET_VARS['totalRows_Recordset1'];
} else {
  
$all_Recordset1 mysql_query($query_Recordset1);
  
$totalRows_Recordset1 mysql_num_rows($all_Recordset1);
}
$totalPages_Recordset1 ceil($totalRows_Recordset1/$maxRows_Recordset1)-1?>
<table border="1"><form name="form1" method="POST" action="<?php echo $editFormAction?>">
  <tr> 
    <td>id</td>
    <td>Responsable</td>
    <td>Camara</td>
    <td>Editor</td>
    <td>Disponible</td>
  </tr>
  <?php do { ?>
  <tr> 
    <td><?php echo $row_Recordset1['id']; ?></td>
    <td><?php echo $row_Recordset1['Responsable']; ?></td>
    <td><?php echo $row_Recordset1['Camara']; ?></td>
    <td><?php echo $row_Recordset1['Editor']; ?></td>
    <td><?php echo $row_Recordset1['Disponible']; ?>
      
        <input name="hiddenField" type="hidden" value="<?php echo $row_Recordset1['id']; ?>">
        <input type="text" name="textfield">
        
        <input type="hidden" name="MM_update" value="form1">
      </td>
  </tr>
  <?php } while ($row_Recordset1 mysql_fetch_assoc($Recordset1)); ?>
<input type="submit" name="Submit" value="Submit"></form></table>
<?php mysql_free_result($Recordset1); ?>
Espero que alguien sea tan amable de explicarme el concepto y como seria el hacer un update como este a mas de un registro a la vez !!!
__________________
:) Fernando Dichiera (:
[email protected]
  #6 (permalink)  
Antiguo 05/06/2006, 23:33
 
Fecha de Ingreso: junio-2006
Ubicación: Jáltipan Veracruz, México
Mensajes: 150
Antigüedad: 17 años, 10 meses
Puntos: 1
algo que no habia visto me parece que en ti gráfico no inicias en cero entonces te recomiendo que tambien guardes el id de inicio para acelerar el proceso del ciclo en el siguiente script, que siendo mysql el proceso es muy rápido
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 03:21.