Foros del Web » Programando para Internet » PHP »

¿Modificar campos de una seleccion de datos...? MUY URGENTE!!

Estas en el tema de ¿Modificar campos de una seleccion de datos...? MUY URGENTE!! en el foro de PHP en Foros del Web. Hola buenas, explico... tengo una pagina que consulta y muestra los resultado de una base de datos en una tabla. Esta tabla la enseño en ...
  #1 (permalink)  
Antiguo 04/06/2009, 07:37
 
Fecha de Ingreso: abril-2009
Mensajes: 46
Antigüedad: 15 años, 7 meses
Puntos: 0
¿Modificar campos de una seleccion de datos...? MUY URGENTE!!

Hola buenas, explico...
tengo una pagina que consulta y muestra los resultado de una base de datos en una tabla. Esta tabla la enseño en campos de texto asi pueden modificarse y al dar a un boton se modifican

este es el codigo:

Código PHP:
<?php
session_start
();
    
$conexion=@mysql_connect("localhost:3307",$_SESSION[usuario],$_SESSION[clave]) or die ("<font face=arial size=2>Acceso denegado</font>");
    
mysql_select_db("inventario"$conexion);
    
$consulta mysql_query("SELECT ns, articulo, marca, modelo, empresa, ubicacion, sububicacion, observaciones FROM articulos ORDER BY ubicacion"$conexion); 
    
    
$fila = @mysql_fetch_array($consulta);
    

    echo 
    
"
    <font face=Arial size=2>
    <center>
    <table bgcolor= #C0C0C0>"
;
        
    while(
$fila mysql_fetch_array($consulta))
    {
    echo 
"
    <form action = modificacionesg.php method = POST>
    <tr>
    <td><center><input type = text value = '$fila[ns]' name = ns2></center></td>
    <td><center><input type = text value = '$fila[articulo]' name = articulo2><center></td>
    <td><center><input type = text value = '$fila[marca]' name = marca2><center></td>
    <td><center><input type = text value = '$fila[modelo]' name = modelo2><center></td>
    <td><center><input type = text value = '$fila[empresa]' name = empresa2><center></td>
    <td><center><input type = text value = '$fila[ubicacion]' name = ubicacion2><center></td>
    <td><center><input type = text value = '$fila[sububicacion]' name = sububicacion2><center></td>
    <td><center><input type = text value = '$fila[observaciones]' name = observaciones2><center></td>
    </tr>"
;
    }
    echo
    
"<td><center><input type = submit value = M></center></td>
    </form>
    </table>
    </body>
    </html>"
;
    
    
    
mysql_close($conexion);
?>
la pagina que me modifica es esta:

Código PHP:
<?php
    session_start
();
   
$conexion=@mysql_connect("localhost:3307",$_SESSION[usuario],$_SESSION[clave]) or die ("<font face=arial size=2>Acceso denegado</font>");
    
mysql_select_db("inventario"$conexion);
    
$resul = @mysql_query("UPDATE articulos SET ns = '$_POST[ns2]', articulo = '$_POST[articulo2]', marca = '$_POST[marca2]', modelo = '$_POST[modelo2]', empresa = '$_POST[empresa2]', ubicacion = '$_POST[ubicacion2]', sububicacion = '$_POST[sububicacion2]', observaciones = '$_POST[observaciones2]' WHERE ns = '$_POST[ns2]'",$conexion); 
    
    
Header ("Location: modificacionesf.php");      
   
mysql_close($conexion); 
?>
pero esto lo que me hace es modificar el ultimo registro de la consulta! no se porque pero es asi...
he probado metiendo el boton dentro del bucle, asi funciona, pero hay un boton para cada campo, yo quiero un boton para todos los campos

no se si se me ha entendido muy bien...
gracias!! necesito ayuda!!
  #2 (permalink)  
Antiguo 04/06/2009, 07:39
Usuario no validado
 
Fecha de Ingreso: octubre-2008
Ubicación: BRUSELAS
Mensajes: 211
Antigüedad: 16 años
Puntos: 3
Respuesta: ¿Modificar campos de una seleccion de datos...? MUY URGENTE!!

saca el form del bucle
  #3 (permalink)  
Antiguo 04/06/2009, 07:43
Avatar de By_George  
Fecha de Ingreso: abril-2009
Ubicación: localhost
Mensajes: 629
Antigüedad: 15 años, 7 meses
Puntos: 19
Respuesta: ¿Modificar campos de una seleccion de datos...? MUY URGENTE!!

umm lo mas logico seria actualizar registro por registro, pero bueno para empezar te actualiza el ultimo registro por que tus input tienen el mismo nombre no cambia y por eso toma el ultimo
__________________
La estadística es una ciencia que demuestra que si mi vecino tiene dos coches y yo ninguno, los dos tenemos uno.
  #4 (permalink)  
Antiguo 04/06/2009, 07:45
Avatar de abidibo  
Fecha de Ingreso: mayo-2009
Mensajes: 121
Antigüedad: 15 años, 5 meses
Puntos: 7
Respuesta: ¿Modificar campos de una seleccion de datos...? MUY URGENTE!!

form
Código PHP:
<?php
session_start
();
    
$conexion=@mysql_connect("localhost:3307",$_SESSION[usuario],$_SESSION[clave]) or die ("<font face=arial size=2>Acceso denegado</font>");
    
mysql_select_db("inventario"$conexion);
    
$consulta mysql_query("SELECT ns, articulo, marca, modelo, empresa, ubicacion, sububicacion, observaciones FROM articulos ORDER BY ubicacion"$conexion); 
    
    
$fila = @mysql_fetch_array($consulta);
    

    echo 
    
"
    <font face=Arial size=2>
    <center>
    <table bgcolor= #C0C0C0>"
;
        
    while(
$fila mysql_fetch_array($consulta))
    {
    echo 
"
    <form action = modificacionesg.php method = POST>
    <tr>
    <td><center><input type = text value = '$fila[ns]' name = 'ns2[]'></center></td>
    <td><center><input type = text value = '$fila[articulo]' name = 'articulo2[]'><center></td>
    <td><center><input type = text value = '$fila[marca]' name = 'marca2[]'><center></td>
    <td><center><input type = text value = '$fila[modelo]' name = 'modelo2[]'><center></td>
    <td><center><input type = text value = '$fila[empresa]' name = 'empresa2[]'><center></td>
    <td><center><input type = text value = '$fila[ubicacion]' name = 'ubicacion2[]'><center></td>
    <td><center><input type = text value = '$fila[sububicacion]' name = 'sububicacion2[]'><center></td>
    <td><center><input type = text value = '$fila[observaciones]' name = 'observaciones2[]'><center></td>
    </tr>"
;
    }
    echo
    
"<td><center><input type = submit value = M></center></td>
    </form>
    </table>
    </body>
    </html>"
;
    
    
    
mysql_close($conexion);
?>
action
Código PHP:
<?php
    session_start
();
   
$conexion=@mysql_connect("localhost:3307",$_SESSION[usuario],$_SESSION[clave]) or die ("<font face=arial size=2>Acceso denegado</font>");
    
mysql_select_db("inventario"$conexion);

foreach(
$_POST['ns2'] as $k=>$v) { 
   
$resul = @mysql_query("UPDATE articulos SET articulo = '".$_POST[articulo2][$k]."', marca = '".$_POST[marca2][$k]."', modelo = '".$_POST[modelo2][$k]."', empresa = '".$_POST[empresa2][$k]."', ubicacion = '".$_POST[ubicacion2][$k]."', sububicacion = '".$_POST[sububicacion2][$k]."', observaciones = '".$_POST[observaciones2][$k]."' WHERE ns = '$v'",$conexion); 
}
    
Header ("Location: modificacionesf.php");      
   
mysql_close($conexion); 
?>
  #5 (permalink)  
Antiguo 04/06/2009, 07:45
 
Fecha de Ingreso: abril-2009
Mensajes: 46
Antigüedad: 15 años, 7 meses
Puntos: 0
Respuesta: ¿Modificar campos de una seleccion de datos...? MUY URGENTE!!

Cita:
Iniciado por fatasma Ver Mensaje
saca el form del bucle
nada, sigue solo modificandose el ultimo registro...
  #6 (permalink)  
Antiguo 04/06/2009, 07:50
Usuario no validado
 
Fecha de Ingreso: octubre-2008
Ubicación: BRUSELAS
Mensajes: 211
Antigüedad: 16 años
Puntos: 3
Respuesta: ¿Modificar campos de una seleccion de datos...? MUY URGENTE!!

miral el codigo de abidibo y sacale el <form action = modificacionesg.php method = POST> del bucle.

Normalmente te tiene que funcionar ..
  #7 (permalink)  
Antiguo 04/06/2009, 07:54
Avatar de abidibo  
Fecha de Ingreso: mayo-2009
Mensajes: 121
Antigüedad: 15 años, 5 meses
Puntos: 7
Respuesta: ¿Modificar campos de una seleccion de datos...? MUY URGENTE!!

Si claro, fue un error, el tag form debe estar fuera del buque!!
Código PHP:
<?php
session_start
();
    
$conexion=@mysql_connect("localhost:3307",$_SESSION[usuario],$_SESSION[clave]) or die ("<font face=arial size=2>Acceso denegado</font>");
    
mysql_select_db("inventario"$conexion);
    
$consulta mysql_query("SELECT ns, articulo, marca, modelo, empresa, ubicacion, sububicacion, observaciones FROM articulos ORDER BY ubicacion"$conexion); 
    
    
$fila = @mysql_fetch_array($consulta);
    

    echo 
    
"
    <font face='Arial' size='2'>
    <center>
    <table bgcolor= '#C0C0C0'>
    <form action = 'modificacionesg.php' method = 'POST'>"
;    
    while(
$fila mysql_fetch_array($consulta))
    {
    echo 
"
    <tr>
    <td><center><input type = text value = '$fila[ns]' name = 'ns2[]'></center></td>
    <td><center><input type = text value = '$fila[articulo]' name = 'articulo2[]'><center></td>
    <td><center><input type = text value = '$fila[marca]' name = 'marca2[]'><center></td>
    <td><center><input type = text value = '$fila[modelo]' name = 'modelo2[]'><center></td>
    <td><center><input type = text value = '$fila[empresa]' name = 'empresa2[]'><center></td>
    <td><center><input type = text value = '$fila[ubicacion]' name = 'ubicacion2[]'><center></td>
    <td><center><input type = text value = '$fila[sububicacion]' name = 'sububicacion2[]'><center></td>
    <td><center><input type = text value = '$fila[observaciones]' name = 'observaciones2[]'><center></td>
    </tr>"
;
    }
    echo
    
"<td><center><input type = submit value = M></center></td>
    </form>
    </table>
    </body>
    </html>"
;
    
    
    
mysql_close($conexion);
?>
  #8 (permalink)  
Antiguo 04/06/2009, 08:02
 
Fecha de Ingreso: abril-2009
Ubicación: En dust 2
Mensajes: 149
Antigüedad: 15 años, 6 meses
Puntos: 2
Respuesta: ¿Modificar campos de una seleccion de datos...? MUY URGENTE!!

prueba:

$resul = @mysql_query("UPDATE articulos SET ns = ' ".$_POST['ns2']." ',....., observaciones = ' ".$_POST['observaciones2']." ' WHERE ns = ' ".$_POST['ns2']." '; " ,$conexion);

Prueba poniendole comillas dobles en los lados, tambien los puntos, y comillas simples en los nombres de las variables devueltas:

' ". $_POST['prueba']." '
  #9 (permalink)  
Antiguo 04/06/2009, 08:03
 
Fecha de Ingreso: abril-2009
Mensajes: 46
Antigüedad: 15 años, 7 meses
Puntos: 0
Respuesta: ¿Modificar campos de una seleccion de datos...? MUY URGENTE!!

lo dicho...

SOIS UNOS PUTOS GENIOS!!

PD: ahora que ya esta resuelto, me podriais explicar el porque de esto?

Código PHP:
foreach($_POST['ns2'] as $k=>$v) {  
   
$resul = @mysql_query("UPDATE articulos SET articulo = '".$_POST[articulo2][$k]."', marca = '".$_POST[marca2][$k]."', modelo = '".$_POST[modelo2][$k]."', empresa = '".$_POST[empresa2][$k]."', ubicacion = '".$_POST[ubicacion2][$k]."', sububicacion = '".$_POST[sububicacion2][$k]."', observaciones = '".$_POST[observaciones2][$k]."' WHERE ns = '$v'",$conexion);  

lo tengo hecho, pero la cuestion del asunto es aprender no?
muchisimas gracias!
  #10 (permalink)  
Antiguo 04/06/2009, 08:14
Avatar de abidibo  
Fecha de Ingreso: mayo-2009
Mensajes: 121
Antigüedad: 15 años, 5 meses
Puntos: 7
Respuesta: ¿Modificar campos de una seleccion de datos...? MUY URGENTE!!

El asunto es que tu quieres insertas muchos registros en una ves.
Antes el error era que tu sobrescribias las variables en continuo, como que utiliabas nombres simples como
name="marca2" etc...
Entonces el primer paso es eso de transformar las variables en array :
name="marca2[]"
Bueno, pues cuando recoges los datos el la action
$_POST['ns2'] es un array que tiene todos los ns2 de los varios registros.
Código PHP:
foreach($_POST['ns2'] as $k=>$v) {  
   
$resul = @mysql_query("UPDATE articulos SET articulo = '".$_POST[articulo2][$k]."', marca = '".$_POST[marca2][$k]."', modelo = '".$_POST[modelo2][$k]."', empresa = '".$_POST[empresa2][$k]."', ubicacion = '".$_POST[ubicacion2][$k]."', sububicacion = '".$_POST[sububicacion2][$k]."', observaciones = '".$_POST[observaciones2][$k]."' WHERE ns = '$v'",$conexion);  

Asì haces un buque sobre todos los elementos del array. Entonces por cada registro que enviaste coges la clave del array ($k) y el valor corrispondiente de ns2 ($v).
De esta forma haces tantas consultas cuantos son los registros enviados, y todos los datos del mismo registros estan liados gracias a $k, como que yodos apartenecen a la misma clave de su propio array.
Una cosa mas: es buena cosa poner los atributos de los tag html dentro '', por ejemplo:
<form action='file.php' method='post'>
y tambien el index de un array:
$_POST['articulo2'][$k]
porque sin '' son considerados como constantes, luego como que el parser no encuentra una constante asì lo interpreta corectamente como string, pero no es corecto o sea que echa un warning.
Chao!
  #11 (permalink)  
Antiguo 04/06/2009, 08:40
 
Fecha de Ingreso: abril-2009
Mensajes: 46
Antigüedad: 15 años, 7 meses
Puntos: 0
Respuesta: ¿Modificar campos de una seleccion de datos...? MUY URGENTE!!

Cita:
Iniciado por abidibo Ver Mensaje
El asunto es que tu quieres insertas muchos registros en una ves.
Antes el error era que tu sobrescribias las variables en continuo, como que utiliabas nombres simples como
name="marca2" etc...
Entonces el primer paso es eso de transformar las variables en array :
name="marca2[]"
Bueno, pues cuando recoges los datos el la action
$_POST['ns2'] es un array que tiene todos los ns2 de los varios registros.
Código PHP:
foreach($_POST['ns2'] as $k=>$v) {  
   
$resul = @mysql_query("UPDATE articulos SET articulo = '".$_POST[articulo2][$k]."', marca = '".$_POST[marca2][$k]."', modelo = '".$_POST[modelo2][$k]."', empresa = '".$_POST[empresa2][$k]."', ubicacion = '".$_POST[ubicacion2][$k]."', sububicacion = '".$_POST[sububicacion2][$k]."', observaciones = '".$_POST[observaciones2][$k]."' WHERE ns = '$v'",$conexion);  

Asì haces un buque sobre todos los elementos del array. Entonces por cada registro que enviaste coges la clave del array ($k) y el valor corrispondiente de ns2 ($v).
De esta forma haces tantas consultas cuantos son los registros enviados, y todos los datos del mismo registros estan liados gracias a $k, como que yodos apartenecen a la misma clave de su propio array.
Una cosa mas: es buena cosa poner los atributos de los tag html dentro '', por ejemplo:
<form action='file.php' method='post'>
y tambien el index de un array:
$_POST['articulo2'][$k]
porque sin '' son considerados como constantes, luego como que el parser no encuentra una constante asì lo interpreta corectamente como string, pero no es corecto o sea que echa un warning.
Chao!
OK!! algo he pillado jeje
muchisimas gracias otra vez crack!
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 13:00.