Foros del Web » Programando para Internet » PHP »

actualizacion multiple

Estas en el tema de actualizacion multiple en el foro de PHP en Foros del Web. Estoy deseperado, no encuentro porque este escript me funciona perfectamente hasta que la "id" llega hasta ela 9, cuando pasa de 10 y sucesivas no ...
  #1 (permalink)  
Antiguo 08/11/2011, 01:57
 
Fecha de Ingreso: enero-2008
Mensajes: 303
Antigüedad: 15 años
Puntos: 0
actualizacion multiple

Estoy deseperado, no encuentro porque este escript me funciona perfectamente hasta que la "id" llega hasta ela 9, cuando pasa de 10 y sucesivas no puedo cambiar ningún registro.
¡¡Ayuda por favor!!
Gracias y un saludo


(envia los datos)

Código PHP:
$con = mysql_connect("localhost","","");
if (! $con){die ("ERROR EN LA CONEXION CON MYSQL: ".mysql_error());}

$base = mysql_select_db ("barco",$con);
if(! $base){die ("ERROR AL CONECTAR CON LA BASE DE DATOS: ".mysql_error());}

/********************************************/
/* Luego vamos a obtener todos los datos que esten contenidos 
en la tabla con una consulta */
$sql = "SELECT * FROM personal";

$resultado = mysql_query($sql);
/*ahora creamos la tabla en html para mostrar los resultados
agregandole un par de botones de radio */
echo "
        
        
        <form name='form2' method='post' action='procesa.php'>
            <table width='80%' align='center' class='celda02'>
                <tr><td>Id</td><td>Nombre</td><td>Sueldo</td><td>Horas Extras</td><td>Anticipo</td><td>Modificar</td><td>Eliminar</td></tr>";
$i = 0 ; //iniciamos nuestro cont en cero
/*el siguiente bucle nos permite obtener la informacion obtenida
de la ejecución de la sentencia de sql */
while ($row = mysql_fetch_row($resultado)){
            echo "<tr><td><input type='hidden' name='id[$i]' value='".$row[0]."' />".$row[0]."</td>
                      <td><input type='text' name='nombre[$i]' value='".$row[1]."' /></td>
                      <td><input type='text' name='sueldo[$i]' value='".$row[2]."'/></td>
                      <td><input type='text' name='extras[$i]' value='".$row[3]."'/></td>
                      <td><input type='text' name='anticipo[$i]' value='".$row[4]."'/></td>
                      <td><input type='radio' name='seleccion[$i]' value='modifica".$row[0]."'></td><!-- Esta línea es para saber si se modifica -->
                      <td><input type='radio' name='seleccion[$i]' value='elimina".$row[0]."'></td><!-- Esta línea es para saber si se elimina -->
                      </tr>";$i++; 
}
echo "</table><input type='submit' value='Enviar'></form>";
?>

</body>
</html>
<?php
procesa

Código PHP:
<?php

$con 
mysql_connect("localhost","","");
if (! 
$con){die ("ERROR EN LA CONEXION CON MYSQL: ".mysql_error());}

$base mysql_select_db ("barco",$con);

if(! 
$base){die ("ERROR AL CONECTAR CON LA BASE DE DATOS: ".mysql_error());}
/********************************************
iniciamos el ciclo con el que obtendremos lo que envio el formulario
**************************************************************/
foreach ($_POST['seleccion'] as $indice => $valor){
//Vamos a verificar si trae la opcion de eliminar o modificar
$opcion substr ($_POST['seleccion'][$indice],0,-1); //extraemos la parte de la cadena que elimina y/o modifica
switch($opcion){
//generamos la sentencia para la modificación filtrando por el id para que solo cambie ese registro
    
case "modifica":$sql="UPDATE personal SET 
                          nombre='"
.$_POST['nombre'][$indice]."',
                          sueldo="
.$_POST['sueldo'][$indice].",
                          extras="
.$_POST['extras'][$indice].",
                          anticipo="
.$_POST['anticipo'][$indice]."
                          WHERE id="
.$_POST['id'][$indice];break;
    case 
"elimina":$sql2="DELETE FROM personal WHERE id=".$_POST['id'][$indice];break;
    default: echo 
"<center>NO HAY NADA SELECCIONADO</center>"; echo $sql;echo  $indice; echo  $valor;echo  $_POST['anticipo'][$indice];echo  $_POST['id'][$indice];break;
}

$resultado mysql_query($sql);
$resultado2 mysql_query($sql2);
if (
$resultado ){echo "
    <script>window.location='personal.php?cambia'</script>"
;}
if (
$resultado2 ){echo "
    <script>window.location='personal.php?eliminar'</script>"
;}

}
?>
  #2 (permalink)  
Antiguo 08/11/2011, 06:13
 
Fecha de Ingreso: abril-2009
Ubicación: Colombia
Mensajes: 949
Antigüedad: 13 años, 9 meses
Puntos: 27
Respuesta: actualizacion multiple

Pero te muestra algun error?.....hazle un echo al UPDATE y pruebalo directamente en el motor de consultas........
  #3 (permalink)  
Antiguo 08/11/2011, 10:14
 
Fecha de Ingreso: enero-2008
Mensajes: 303
Antigüedad: 15 años
Puntos: 0
Respuesta: actualizacion multiple

Si claro, como verás en el scrip pico eco de la consulta y de las matrices y valores.
Me da error que no se ha podido ejecutar la consulta.
Las matrices y el valor está bien.
Sin embargo cuando una id es superior a 9 no hace el update, si es inferior si
¿Alguien se puede explicar esto?

Si quieres puedes probarlo tu mismo, te mando los dastos de la bd.
Gracias
CREATE TABLE IF NOT EXISTS `personal` (
`id` int(5) NOT NULL AUTO_INCREMENT,
`nombre` varchar(100) NOT NULL,
`sueldo` int(5) DEFAULT '0',
`extras` int(5) DEFAULT '0',
`anticipo` int(5) DEFAULT '0',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=15 ;

--
-- Volcar la base de datos para la tabla `personal`
--

INSERT INTO `personal` (`id`, `nombre`, `sueldo`, `extras`, `anticipo`) VALUES
(1, 'angel', 1000, 0, 0),
(3, 'adres', 222, 0, 0),
(4, 'dddd', 9999, 50, 150),
(14, 'ffffffff', 4444, 0, 0),
(13, 'dddxdd', NULL, 0, 0);
  #4 (permalink)  
Antiguo 08/11/2011, 11:15
 
Fecha de Ingreso: enero-2008
Mensajes: 303
Antigüedad: 15 años
Puntos: 0
Respuesta: actualizacion multiple

Perdon, deje mal los datos de la bd

Eston son buenos

CREATE DATABASE `tienda` DEFAULT CHARACTER SET latin1 COLLATE latin1_swedish_ci;
USE `tienda`;

-- --------------------------------------------------------

--
-- Estructura de tabla para la tabla `productos`
--

CREATE TABLE IF NOT EXISTS `productos` (
`id` int(5) NOT NULL AUTO_INCREMENT,
`nombre` varchar(100) NOT NULL,
`existencia` int(5) DEFAULT '0',
`p_compra` int(5) NOT NULL DEFAULT '0',
`p_venta` int(5) NOT NULL DEFAULT '0',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=15 ;

--
-- Volcar la base de datos para la tabla `productos`
--

INSERT INTO `productos` (`id`, `nombre`, `existencia`, `p_compra`, `p_venta`) VALUES
(3, 'adres', 222, 0, 0),
(4, 'dddd', 9999, 50, 150),
(14, 'ffffffff', 4444, 0, 0),
(13, 'dddd', 9999, 50, 150);
  #5 (permalink)  
Antiguo 09/11/2011, 06:12
 
Fecha de Ingreso: abril-2009
Ubicación: Colombia
Mensajes: 949
Antigüedad: 13 años, 9 meses
Puntos: 27
Respuesta: actualizacion multiple

Bueno veo algo inconsistente, los campos que son tipo INT, no deberian llevar tamaño, porque el int no acepta tamaño, tu estas usando un autoincremento....no deberias ingresar el id cuando haces un INSERT...Creo que hay puedes tener el problema.............

Última edición por oscarbt; 09/11/2011 a las 06:27

Etiquetas: formulario, html, mysql, registro, sql, tabla, actualizaciones
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

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 20:47.