Foros del Web » Programando para Internet » PHP »

Realizar update en varios registros a la vez

Estas en el tema de Realizar update en varios registros a la vez en el foro de PHP en Foros del Web. Buenas gente, tengo un sitio de musica en el que tengo un ranking musical y quiero hacer un formulario de carga de los nombres interpretes ...
  #1 (permalink)  
Antiguo 07/08/2009, 09:21
 
Fecha de Ingreso: abril-2009
Ubicación: Buenos Aires, Argentina
Mensajes: 33
Antigüedad: 15 años
Puntos: 1
Desacuerdo Realizar update en varios registros a la vez

Buenas gente, tengo un sitio de musica en el que tengo un ranking musical
y quiero hacer un formulario de carga de los nombres interpretes y movimientos de los temas y otra pagina de resultado
ya he creado la base de datos donde los campos son
id (puesto)
interprete (intreprete del tema ej shakira)
tema (tema ej loba)
mov (movimiento en el ranking semanal ej. +8)

La pagina de carga es la siguiente:

Código PHP:
<?php
   
include("conexion.php");
?>
<html>

<head>
<meta http-equiv="Content-Language" content="es">
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<title>Puesto</title>
</head>

<body>
<FORM ACTION="top20_proceso.php" METHOD="post" enctype="multipart/form-data">
<table width="100%">
    <tr>
        <td width="6%"><font size="2" face="Verdana">Puesto</font></td>
        <td><font size="2" face="Verdana">Interprete</font></td>
        <td><font size="2" face="Verdana">Tema</font></td>
        <td width="15%"><font size="2" face="Verdana">Mov</font></td>
    </tr>
    <tr>
    <?php
    $result
=mysql_query("SELECT puestos.* FROM puestos",$link);

    while(
$row mysql_fetch_array($result)) {
        
printf("<tr><td> %s</td><td><input type='text' name='interprete' size='58' value=%s></td><td><input type='text' name='tema' size='58' value=%s></td><td><input type='text' name='mov' size='5' value=%s></tr>"$row["id"],$row["interprete"],$row["tema"],$row["mov"]);
    }
    
mysql_free_result($result);
    
mysql_close($link);
?>
    </tr>
    <tr>
        <td colspan="4">&nbsp;<p><font face="Verdana">
        <input type="submit" value="Enviar" name="B1">
        <input type="reset" value="Limpiar todo" name="B2"></font></td></tr></table>
</FORM>
</body>

</html>
La pagina de proceso es la siguiente:

Código PHP:
<?php
include("conexion.php");
   
$id=$_POST['id'];
   
$interprete=$_POST['interprete'];
   
$tema=$_POST['tema'];
   
$mov=$_POST['mov'];

function 
quitar($mensaje)
{
$mensaje str_replace("<","<",$mensaje);
$mensaje str_replace(">",">",$mensaje);
$mensaje str_replace("\'","'",$mensaje);
$mensaje str_replace('\"',"/",$mensaje);
$mensaje str_replace("\\\\","/",$mensaje);
return 
$mensaje;
}

   
mysql_query("UPDATE puestos SET id='$id', interprete='$interprete',  tema='$tema', mov='$mov' WHERE id=$id;",$link);

$sql .= ")";
mysql_query($sql);
echo 
"Registro exitoso!";
mysql_close();
?>

El problema es que no se si debo realizar un ciclo para que guarde todos los registros, si tengo que detallar cada campo como diferente para que no me guarde todos los resultados en el id 1
o que estoy haciendo mal ya que no me guarda nada :(
  #2 (permalink)  
Antiguo 07/08/2009, 09:39
 
Fecha de Ingreso: abril-2009
Ubicación: Buenos Aires, Argentina
Mensajes: 33
Antigüedad: 15 años
Puntos: 1
Respuesta: Realizar update en varios registros a la vez

agrego una salvacion
no estaba agregando el campo id en la pagina de carga

<?php
$result=mysql_query("SELECT puestos.* FROM puestos",$link);

while($row = mysql_fetch_array($result)) {
printf("<tr><td><input type='text' name='id' size='3' value=%s></td><td><input type='text' name='interprete' size='58' value=%s></td><td><input type='text' name='tema' size='58' value=%s></td><td><input type='text' name='mov' size='5' value=%s></tr>", $row["id"],$row["interprete"],$row["tema"],$row["mov"]);
}
mysql_free_result($result);
mysql_close($link);
?>
  #3 (permalink)  
Antiguo 07/08/2009, 11:34
 
Fecha de Ingreso: abril-2009
Ubicación: Buenos Aires, Argentina
Mensajes: 33
Antigüedad: 15 años
Puntos: 1
Respuesta: Realizar update en varios registros a la vez

alguien me va a poder ayudar? pleasseee amigos
  #4 (permalink)  
Antiguo 07/08/2009, 11:48
Avatar de Snaft_J1  
Fecha de Ingreso: diciembre-2006
Mensajes: 285
Antigüedad: 17 años, 4 meses
Puntos: 8
Respuesta: Realizar update en varios registros a la vez

umm, al realizar el update este actualiza todo lo que corresponda a la condicional que estableces caso contrario actualiza todo el contenido de la tabla.

ahora si lo que deseas es cambiar el Id para todos lo interpretes por ejemplo:
caso en que se quieran desplazar todos los interpretes una posicion en el ranking seria hacer esto en el SET de la clausula UPDATE, SET id= $id + 1

bueno, tal vez pueda ayudarte si expones un tanto mas claro todo.

saludos.
  #5 (permalink)  
Antiguo 07/08/2009, 16:00
 
Fecha de Ingreso: abril-2009
Ubicación: Buenos Aires, Argentina
Mensajes: 33
Antigüedad: 15 años
Puntos: 1
Respuesta: Realizar update en varios registros a la vez

claro me explico mejor..
yo tengo un interprete, tema, mov para cada id
lo que necesito es actualizar cada registro donde coincida el id o sea
id-interprete-tema-mov
1-Shakira - Loba - +3
y asi con los 20 pero con un mismo submit o sea que necesito hacer un bucle para que me actualice cada registro del 1 al 20
  #6 (permalink)  
Antiguo 07/08/2009, 17:57
Avatar de Snaft_J1  
Fecha de Ingreso: diciembre-2006
Mensajes: 285
Antigüedad: 17 años, 4 meses
Puntos: 8
Respuesta: Realizar update en varios registros a la vez

Cita:
lo que necesito es actualizar cada registro donde coincida el id
umm, pues precisamente eso es lo que hace la sentencia UPDATE.
Código:
UPDATE puestos 
SET id='$id', interprete='$interprete',  tema='$tema', mov='$mov' 
WHERE id=$id;",
este query actualizara tooodos los registros que posean el Id que este contenido en la variable $id, sin exepcion alguna, pueden ser 2 o pueden ser 10.000, vale?

Saludos...
  #7 (permalink)  
Antiguo 07/08/2009, 19:09
 
Fecha de Ingreso: abril-2009
Ubicación: Buenos Aires, Argentina
Mensajes: 33
Antigüedad: 15 años
Puntos: 1
Respuesta: Realizar update en varios registros a la vez

ah o sea que si tengo 20 id diferentes
20 interpretes diferentes
20 temas diferentes y
20 mov diferentes me actualizara todos?
a lo que voy es que todos los campos id se llaman id y todos temas todos mov ej:
el resultado de la carga sería algo asi


id-interprete-tema-mov
id-interprete-tema-mov
id-interprete-tema-mov
id-interprete-tema-mov
id-interprete-tema-mov
id-interprete-tema-mov
id-interprete-tema-mov
id-interprete-tema-mov
id-interprete-tema-mov
id-interprete-tema-mov
id-interprete-tema-mov
id-interprete-tema-mov
id-interprete-tema-mov
id-interprete-tema-mov
id-interprete-tema-mov
id-interprete-tema-mov
id-interprete-tema-mov
id-interprete-tema-mov
id-interprete-tema-mov
id-interprete-tema-mov

la pregunta es

como sabra el proceso si hay 20 campos interprete que seran iguales
me tomara solo el ultimo campo llamado interprete, el ultimo campo llamado tema y el ultimo llamado mov y me los multiplicara el mismo registro por 20

se entiende?
  #8 (permalink)  
Antiguo 07/08/2009, 19:30
Avatar de Snaft_J1  
Fecha de Ingreso: diciembre-2006
Mensajes: 285
Antigüedad: 17 años, 4 meses
Puntos: 8
Respuesta: Realizar update en varios registros a la vez

no, no se entiende. je je je...

pero si el contenido de tu tabla es:
id-interprete-tema-mov
id-interprete-tema-mov
id-interprete-tema-mov
id-interprete-tema-mov
id-interprete-tema-mov
id-interprete-tema-mov
id-interprete-tema-mov
id-interprete-tema-mov
id-interprete-tema-mov
id-interprete-tema-mov
id-interprete-tema-mov
id-interprete-tema-mov
id-interprete-tema-mov
id-interprete-tema-mov
id-interprete-tema-mov
id-interprete-tema-mov
id-interprete-tema-mov
id-interprete-tema-mov
id-interprete-tema-mov
id-interprete-tema-mov

e intentas actualizar diciendo, Where ColId = 'id', tendras problemas pues todos se cambiaran.

espero haber comprendido tu post anterior.

saludos..
  #9 (permalink)  
Antiguo 11/08/2009, 07:46
 
Fecha de Ingreso: abril-2009
Ubicación: Buenos Aires, Argentina
Mensajes: 33
Antigüedad: 15 años
Puntos: 1
Respuesta: Realizar update en varios registros a la vez

claro, el problema es que tengo 20 campos id (que por mas que su contenido sea diferente todos se llaman id)
igual con interprete tema y mov hay 20 campos de cada uno o sea de mismo nombre
o sea que debería asignar un nombre distinto a cada campo y quizas ahí lo haga bien
el tema es que como eso lo genera solo con while no se como hacerlo
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:32.