Foros del Web » Programando para Internet » PHP »

Como limitar el update en tabla paginada???

Estas en el tema de Como limitar el update en tabla paginada??? en el foro de PHP en Foros del Web. Supongo que para ustedes puede ser facil pero tengo un problema al limitar el update en tabla paginada, Tengo una pagina php que muestra cierta ...
  #1 (permalink)  
Antiguo 20/10/2006, 16:11
 
Fecha de Ingreso: diciembre-2001
Ubicación: Mar del Plata
Mensajes: 203
Antigüedad: 22 años, 5 meses
Puntos: 0
Como limitar el update en tabla paginada???

Supongo que para ustedes puede ser facil pero tengo un problema al limitar el update en tabla paginada, Tengo una pagina php que muestra cierta cantidad de registros de una db mysql y pasados los 20 registros los pagina, es decir genera los "pagina siguiente, pag.anterior" y demas. El tema es el siguiente en dichas paginas por cada registro mostrado en un renglon de una tabla tengo dos button radios que toman el valor "si" o "no" de un campo de la db y a su vez permiten cambiar el estado de estas (haciendo un update) esto funciona pero sucede ALGO EXTRANIO (he aqui el error!!!) Si por ejemplo efectuo un update de los datos mostrados en la primera pagina, este se efectua pero los datos de esos campos actualizados de las paginas no mostradas quedan "vacios" Evidentemente TENGO un ERROR en la programacion y no puedo dar con el !!!
Para llegar a crear esta pagina, me ayude de dreamweaver y la inestimable ayuda de un miembro de esta comunidad, pero parece que algo falta o falla. Les dejo el code por si alguien pudiera ayudarme. Desde ya muchisimas gracias !!!

Código PHP:
<? require_once('Connections/fermdp14.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")) {  

  
mysql_select_db($database_fermdp14$fermdp14);  
  
$Resultini mysql_query("Select * from nota WHERE id > 1"$fermdp14) or die(mysql_error()); 

while(
$row=mysql_fetch_row($Resultini)) 


$valor="r".$row[0]; 
$clv=$$valor
$result1=mysql_query("UPDATE nota set Disponible='$clv' WHERE id='$row[0]'"$fermdp14); // SUPONGO QUE AQUI RADICA EL ERROR


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

$maxRows_Recordset1 20;  
$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 WHERE id > 1 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?> 

<html> 
<head> 
<style type="text/css"><!-- @import url("librerias/c8.css"); --></style> 
<title>Teleocho Informa - Administrar Archivo de Noticias</title> 
</head> 

<form name="form1" method="POST" action="<?php echo $editFormAction?>"> 

<table width="714" border="0" align="center"><tr class="letra_comun"><td><div align="right"> 
<?php if ($pageNum_Recordset1 0) { // Show if not first page ?><?php if ($pageNum_Recordset1 0) { // Show if not first page ?> 
<a href="<?php printf("%s?pageNum_Recordset1=%d%s"$currentPage0$queryString_Recordset1); ?>">Primera</a> 
<?php // Show if not first page ?> 
<a href="<?php printf("%s?pageNum_Recordset1=%d%s"$currentPagemax(0$pageNum_Recordset1 1), $queryString_Recordset1); ?>">Anterior</a> 
<?php // Show if not first page ?> 
<?php if ($pageNum_Recordset1 $totalPages_Recordset1) { // Show if not last page ?> 
<a href="<?php printf("%s?pageNum_Recordset1=%d%s"$currentPagemin($totalPages_Recordset1$pageNum_Recordset1 1), $queryString_Recordset1); ?>">Siguiente</a> 
<?php // Show if not last page ?> 
<?php if ($pageNum_Recordset1 $totalPages_Recordset1) { // Show if not last page ?> 
<a href="<?php printf("%s?pageNum_Recordset1=%d%s"$currentPage$totalPages_Recordset1$queryString_Recordset1); ?>">Ultima</a> 
<?php // Show if not last page ?> 
</div></td></tr></table> 

<table width="756" border="1" align="center" cellpadding="0" cellspacing="0" bordercolor="#000000"> 
<?php do { ?> 
<tr class="letra_comun">   
<td><div align="center"><?php echo $row_Recordset1['id']; ?></div></td>  
<td width="256">&nbsp;&nbsp;<a href="detalle_nota.php?id=<?php echo $row_Recordset1['id']; ?>" target="_blank"><?php echo $row_Recordset1['Nombre_nota']; ?></a></td>  
<td><strong>&nbsp;<?php echo $row_Recordset1['Soporte']?></strong> &nbsp;In:<strong><?php echo $row_Recordset1['Comienza'?> </strong>&nbsp;&nbsp;Dura:<span class="letra_comun_mediana"><strong><?php echo $row_Recordset1['Dura'?></strong></span></td> 
     
<? if(strcmp($row_Recordset1['Disponible'],'si')==0

$valor=$row_Recordset1['id'];  

echo
"<td bgcolor='#00FF00'>  
<input type='radio' name='r$valor' checked value='si'>Disp.<br> 
<input type='radio' name='r$valor'value='no'>Archivo 
</td>"


else 

$valor=$row_Recordset1['id'];  
echo
"<td bgcolor='#DD0000'> 
<input type='radio' name='r$valor' value='si'>Disp.<br> 
<input type='radio' name='r$valor' checked value='no'>Archivo  
</td>"

?> 

<td bgcolor="#FFFFFF"> 
<div align="center"><a href="borrar.php?id=<?php echo $row_Recordset1['id']; ?>&desde=admin.php"><img src="images/cesto.gif" alt="Borrar" border="0"></a></div></td> 
</tr> 
<?php } while ($row_Recordset1 mysql_fetch_assoc($Recordset1)); ?> 
</table> 
<input type="hidden" name="MM_update" value="form1"> 
<div align="center"><br /> 
<input type="submit" name="Submit" value="Efectuar Cambios"> 
</div> 
</form> 
<?php mysql_free_result($Recordset1); ?>
__________________
:) Fernando Dichiera (:
[email protected]
  #2 (permalink)  
Antiguo 21/10/2006, 12:34
 
Fecha de Ingreso: diciembre-2001
Ubicación: Mar del Plata
Mensajes: 203
Antigüedad: 22 años, 5 meses
Puntos: 0
Alguna idea, supongo que habra que limitar el update pero como ???
__________________
:) Fernando Dichiera (:
[email protected]
  #3 (permalink)  
Antiguo 23/10/2006, 22:05
 
Fecha de Ingreso: diciembre-2001
Ubicación: Mar del Plata
Mensajes: 203
Antigüedad: 22 años, 5 meses
Puntos: 0
La solucion por si le sirve a alguien...alli va

Código PHP:
<? require_once('Connections/fermdp14.php'); 

$datosporhoja 33;

header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
header("Last-Modified: " gmdate("D, d M Y H:i:s") . " GMT");
header("Cache-Control: no-cache, must-revalidate");
header("Pragma: no-cache");

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")) { 

$maxRows_Recordset1 $datosporhoja
$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); 
  
$Resultini mysql_query("SELECT * FROM nota WHERE id > 100 ORDER BY id DESC LIMIT  $startRow_Recordset1, $maxRows_Recordset1"$fermdp14) or die(mysql_error());

while(
$row=mysql_fetch_row($Resultini))
{

$valor="r".$row[0];
$clv=$$valor;

$result1 mysql_query("UPDATE nota set Disponible='$clv' WHERE id='$row[0]'"$fermdp14) or die(mysql_error());

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


$maxRows_Recordset1 $datosporhoja
$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 WHERE id > 100 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?>

<html>
<head>
<style type="text/css">
<!-- @import url("librerias/estilo.css"); .style3 {    font-size: 9px; color: #000000; } -->
</style>
<title>Teleocho Informa - Administrar Archivo de Noticias</title>
</head>
<body leftmargin="0" topmargin="0" marginwidth="0" marginheight="0">
<a name="up"></a>
<? include('encabezado2.php'); ?>
<form name="form1" method="POST" action="<? echo $editFormAction?>">
<table width="714" border="0" align="center" cellpadding="0" cellspacing="0"><tr>
<td width="193"><span class="letra_comun_mediana">Administrar Notas</span></td>
<td width="17" bgcolor="#00FF00">&nbsp;</td>
<td width="77" class="letra_comun">&nbsp;Disponible</td>
<td width="12">&nbsp;</td>
<td width="17" bgcolor="#FF0000">&nbsp;</td>
<td width="80" class="letra_comun">&nbsp;Archivada</td>
<td width="17" bgcolor="#BFFFBF">&nbsp;</td>
<td width="1">&nbsp;</td>
<td width="17" bgcolor="#FFBFBF">&nbsp;</td>
<td width="203" class="letra_comun">&nbsp;Reci&eacute;n cambiadas<br>
  <span class="style3">&nbsp;(Click en &quot;OK&quot; o&quot;Efectuar Cambios&quot;)</span></td>
<td width="14" align="right"><input type="submit" name="Submit" value="OK"></td>
</tr></table><br>

<table width="714" border="0" align="center"><tr class="letra_comun">
<td>P&aacute;gina <?php echo $pageNum_Recordset1 1?> de <?php echo $totalPages_Recordset1 1?></td>
<td><div align="right">
<? if ($pageNum_Recordset1 0) { ?>
<? 
if ($pageNum_Recordset1 0) { ?>
<a href="<? printf("%s?pageNum_Recordset1=%d%s"$currentPage0$queryString_Recordset1); ?>">Primera</a> <? // Show if not first page ?>
<a href="<? printf("%s?pageNum_Recordset1=%d%s"$currentPagemax(0$pageNum_Recordset1 1), $queryString_Recordset1); ?>">Anterior</a> <? ?>
<? 
if ($pageNum_Recordset1 $totalPages_Recordset1) { // Show if not last page ?><a href="<? printf("%s?pageNum_Recordset1=%d%s"$currentPagemin($totalPages_Recordset1$pageNum_Recordset1 1), $queryString_Recordset1); ?>">Siguiente</a> <? ?>
<? 
if ($pageNum_Recordset1 $totalPages_Recordset1) { ?><a href="<? printf("%s?pageNum_Recordset1=%d%s"$currentPage$totalPages_Recordset1$queryString_Recordset1); ?>">Ultima</a> <? ?>
</div></td></tr></table>

<table width="756" border="1" align="center" cellpadding="0" cellspacing="0" bordercolor="#000000">
<td class="letra_comun_mediana"><div align="center">N&deg;</div></td>
<td class="letra_comun_mediana"><div align="center">Nota</div></td>
<td class="letra_comun_mediana"><div align="center">Soporte/Tiempos</td>
<td class="letra_comun_mediana"><div align="center">Estado</div></td>
<td class="letra_comun_mediana">&nbsp;</td>
<? do { ?>
<tr class="letra_comun">
<td><div align="center"><? echo $row_Recordset1['id']; ?></div></td> 
<td width="256">&nbsp;&nbsp;<a href="detalle_nota.php?id=<? echo $row_Recordset1['id']; ?>" target="_blank"><? echo $row_Recordset1['Nombre_nota']; ?></a></td> 
<td><strong>&nbsp;<? echo $row_Recordset1['Soporte']?></strong> &nbsp;In:<strong><? echo $row_Recordset1['Comienza'?> </strong>&nbsp;&nbsp;Dura:<span class="letra_comun_mediana"><strong><? echo $row_Recordset1['Dura'?></strong></span></td>
    
<? if(strcmp($row_Recordset1['Disponible'],'si')==0)
{
$valor=$row_Recordset1['id']; 

echo
"<td id=\"popor$valor\" bgcolor='#00FF00'>
<input type='radio' onclick = \"popor$valor.style.background = '#BFFFBF'\" name='r$valor' checked value='si'>Disp.<br>
<input type='radio' onclick = \"popor$valor.style.background = '#FFBFBF'\" name='r$valor'value='no'>Archivo
</td>"
;
}
else
{
$valor=$row_Recordset1['id']; 
echo
"<td id=\"popo$valor\" bgcolor='#DD0000'>
<input type='radio' onclick = \"popo$valor.style.background = '#BFFFBF'\" name='r$valor' value='si'>Disp.<br>
<input type='radio' onclick = \"popo$valor.style.background = '#FFBFBF'\" name='r$valor' checked value='no'>Archivo 
</td>"
;
?>

<td bgcolor="#FFFFFF">
<div align="center"><a href="borrar.php?id=<? echo $row_Recordset1['id']; ?>&desde=admin.php"><img src="images/cesto.gif" alt="Borrar" border="0"></a></div></td>
</tr>
<? } while ($row_Recordset1 mysql_fetch_assoc($Recordset1)); ?>
</table>

<table width="714" border="0" align="center"><tr class="letra_comun">
<td>Total de Notas en el Sistema: <?php echo $totalRows_Recordset1?></td>
<td><div align="right">
<? if ($pageNum_Recordset1 0) { ?>
<? 
if ($pageNum_Recordset1 0) { ?>
<a href="<? printf("%s?pageNum_Recordset1=%d%s"$currentPage0$queryString_Recordset1); ?>">Primera</a> <? // Show if not first page ?>
<a href="<? printf("%s?pageNum_Recordset1=%d%s"$currentPagemax(0$pageNum_Recordset1 1), $queryString_Recordset1); ?>">Anterior</a> <? ?>
<? 
if ($pageNum_Recordset1 $totalPages_Recordset1) { // Show if not last page ?><a href="<? printf("%s?pageNum_Recordset1=%d%s"$currentPagemin($totalPages_Recordset1$pageNum_Recordset1 1), $queryString_Recordset1); ?>">Siguiente</a> <? ?>
<? 
if ($pageNum_Recordset1 $totalPages_Recordset1) { ?><a href="<? printf("%s?pageNum_Recordset1=%d%s"$currentPage$totalPages_Recordset1$queryString_Recordset1); ?>">Ultima</a> <? ?>
</div></td></tr></table>

<input type="hidden" name="MM_update" value="form1">
<div align="center"><br /><input type="submit" name="Submit" value="Efectuar Cambios">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<input name="Button322" type="button" class="button" onClick="window.location='#up'" value="Volver Arriba" /><br><br></div>
</form>

<? mysql_free_result($Recordset1); ?>
__________________
:) Fernando Dichiera (:
[email protected]
  #4 (permalink)  
Antiguo 24/10/2006, 06:22
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 4 meses
Puntos: 129
Un consejo .. despues de cada redirección que haces con header() de tipo "Location" .. es recomendable que terminases la ejecución del script en ese punto y no esperar a que se cumplan tus "if() .. else" que definan el flujo del código de ese script.

Código PHP:
header(sprintf("Location: %s"$updateGoTo));  
exit; 
Así el resto de códgio que puedas tener a continuación no se ejecutará .. pues tampoco es su objetivo ya que ahí dices "cambia la ejecución de esa página por otra" .... incluso antes de que llegue el contenido de esta al navegador (cliente) pues lo haces por cabeceras HTTP.

Sobre tu solución adoptada ... supongo que tenías problemas con caché? y lo solucionastes con el control del mismo que haces en esos "header()" que lanzas al principio del script .. no?

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #5 (permalink)  
Antiguo 24/10/2006, 11:40
 
Fecha de Ingreso: diciembre-2001
Ubicación: Mar del Plata
Mensajes: 203
Antigüedad: 22 años, 5 meses
Puntos: 0
Muchas gracias por los concejos, con respecto al exit, ya lo implementare, y el error que tenia era que no limitaba el update a los registros mostrados en la pagina sino a toda la tabla por ello los registros listados si se actualizabanbien pero los que quedaban restantes se actualizaban con datos vacios !!!, luego de buscar mucho, dado que es de lo primero que realizo tan complejo en php, pude deducir que el erreror radicaba alli, pues como dije los restantes registros taban vacios !!!!. Eres muy amable !!! Lo del cache en un principio no lo postee para no dar la lata con tanto code !!!
__________________
:) Fernando Dichiera (:
[email protected]
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 14:16.