Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

Actualizar varios campos ala vez....

Estas en el tema de Actualizar varios campos ala vez.... en el foro de Mysql en Foros del Web. Buenas tardes necesitaba como actualizar varios campos ala vez estaba leyendo e investigando en internet pero no se como actualizar teniendo otra tabla relacionada... en ...
  #1 (permalink)  
Antiguo 22/11/2011, 13:17
 
Fecha de Ingreso: marzo-2011
Ubicación: Zacatecas
Mensajes: 59
Antigüedad: 13 años, 1 mes
Puntos: 0
Actualizar varios campos ala vez....

Buenas tardes necesitaba como actualizar varios campos ala vez estaba leyendo e investigando en internet pero no se como actualizar teniendo otra tabla relacionada...
en la tabla tengo
idTop,Nombre,Artista,Estacion,estaciones_idEstacio nes

y en la consulta atraves de un procedimiento almacenado la tengo asi...

CREATE DEFINER=`root`@`localhost` PROCEDURE `Actualizar_Top10`(

IN id INT(11),
IN nom VARCHAR(45),
IN art VARCHAR(45),
IN est VARCHAR(45)
)
BEGIN
UPDATE top10 set Nombre=nom,Artista=art,Estacion=est
WHERE idNotas=id;
END

y en el php mando los valores así:


$c = count($_POST["idTop"]);
if ($c > 0) {
for ($i=0; $i<$c; $i++) {
$idTop = $_POST["idTop"][$i];
$Nombre= $_POST["Nombre"][$i];
$Artista= $_POST["Artista"][$i];
$Estacion= $_POST["Estacion"][$i];
$datos = $mysqli->query("CALL Actualizar_Top10('$Nombre','$Artista','$Estacion') ");
}
}
  #2 (permalink)  
Antiguo 22/11/2011, 20:05
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: Actualizar varios campos ala vez....

En realidad es fácil, porque tanto UPDATE como DELETE aceptan el uso de JOIN para relacionar dos o más tablas. No necesitas un SP para eso.
Código MySQL:
Ver original
  1. UPDATE tabla1 T1 JOIN tabla2 T2
  2. SET T1.a = valor, T1.b = valor2, T2.c = valor3
  3. WHERE T1.id_t1 = T2.id_t2

¿Podrías postear la estructura de las tablas y cómo es la relación entre ellas? Así te podemos dar un ejemplo más concreto.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 23/11/2011, 12:23
 
Fecha de Ingreso: marzo-2011
Ubicación: Zacatecas
Mensajes: 59
Antigüedad: 13 años, 1 mes
Puntos: 0
Respuesta: Actualizar varios campos ala vez....

Gracias por responder gnzsoloyo
mira ya modifique el archivo donde recoje los datos del input
<?php session_start();
$mysqli = new mysqli("localhost", "root", "root");
$mysqli->select_db("zer");

$idTop = $_POST["idTop"];
$Nombre= $_POST["Nombre"];
$Artista= $_POST["Artista"];
$Estacion= $_POST["Estacion"];
for ($i=0;$i<count($idTop);$i++)
{
$datos = $mysqli->query("UPDATE top10 SET Nombre='$Nombre[$i]',Artista='$Artista[$i]',Estacion='$Estacion[$i]' WHERE idTop='$idTop[$i]'");
}
header("location: Mixtos.php");
?>

y en el formulario lo tengo asi si te fijas ago un do while para que me muestre los campos que tengo en la base de datos y con un contador para que recorra cada id de la base de datos pero no me actualiza solo el primer campo pero me manda vacio :/ y en estacion solo me ingresa una letra:


<form action="ActualizarTop10.php" name="frm" id="frm" method="POST" enctype='multipart/form-data'>
<div align="center">
<input type="hidden" name="idTop" value ="<?php echo $lista2->idTop; ?>"><br>
<table width="367" height="349" border="0">
<tr>
<td><div align="center"><b>Titulo</b></div></td>
<td><div align="center"><b>Artista</b></div></td>
</tr>
<?
$cont2=1;
$cont=1;
do {
?>
<tr>
<td><div align="center"><b><?echo $cont2?></b>
<input type="text" size="20" name="<?echo 'Titulo'.$cont?>" id="<?echo 'Titulo'.$cont?>" value="<?php echo $lista2->Nombre; ?>"/>
</div>
</td>
<td><div align="center">
<input type="text" size="20" name="<?echo 'Titulo'.$cont?>" id="<?echo 'Artista'.$cont?>" value="<?php echo $lista2->Artista; ?>"/>
</div>
</td>
</tr>
<?
$cont2++;
$cont++;

} while ($lista2 = $datos2->fetch_object()); ?>

Etiquetas: campos, update
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 21:26.