Foros del Web » Programando para Internet » PHP »

Problema envio de datos al actulizar!!

Estas en el tema de Problema envio de datos al actulizar!! en el foro de PHP en Foros del Web. A ver si lo puedo explicar lo mejor posible.. En una pagina de futbol tengo una tabla clasificacion donde recojo los datos para mostrarlos en ...
  #1 (permalink)  
Antiguo 20/08/2008, 15:13
 
Fecha de Ingreso: agosto-2008
Mensajes: 71
Antigüedad: 15 años, 8 meses
Puntos: 2
Problema envio de datos al actulizar!!

A ver si lo puedo explicar lo mejor posible.. En una pagina de futbol tengo una tabla clasificacion donde recojo los datos para mostrarlos en campos "input" dentro de un formulario el cual pretendo modificar los datos y volverlos a enviar a la misma tabla..
el problema me lo encuentro en que cuando envio los datos me modifica todas las filas con el mismo valor que le he insertado a la ultima... y la pregunta es..
¿como podria hacer para que me respetara las id e insertara cada valor en su fila con su id correspondiente?

Os pego el codigo a ver si veis la solucion... gracias de antemano...

Aqui recojo los datos de la tabla..
$sqlClasificacion="SELECT * FROM clasificacion";
$resultClasificacion=mysql_query($sqlClasificacion ,$idcon);
Creo el bucle para rellenar todos los campos dentro de cada input...
while($filas=mysql_fetch_assoc($resultClasificacio n)){
$indice=1;
$indice=$clasificacion++;
$filasDiferencia=$filas['golesAfavor']-$filas['golesEncontra'];

Inserto el formulario para enviar los nuevos datos...
if($_POST['enviar']){
$club=$_POST['Club'];
$puntos=$_POST['Puntos'];
$jugados=$_POST['Jugados'];
$ganados=$_POST['Ganados'];
$empatados=$_POST['Empatados'];
$perdidos=$_POST['Perdidos'];
$golesAfavor=$_POST['GolesAfavor'];
$golesEncontra=$_POST['GolesEncontra'];
$diferencia=$_POST['Diferencia'];
$idClasificacion=$_POST['idClasificacion'];

$sqlUpdate="UPDATE clasificacion SET club='$club', puntos=$puntos, jugados=$jugados, ganados=$ganados, empatados=$empatados, perdidos=$perdidos, golesAfavor=$golesAfavor, golesEncontra=$golesEncontra, diferencia=$diferencia WHERE idClasificacion=".$filas['idClasificacion'];
echo ($sqlUpdate);
mysql_query($sqlUpdate,$idcon) or die (mysql_error());
} Aqui creo los inputs con todos los campos rellenados...
echo '<tr width="950"><input type="hidden" name="idClasificacion" id="idClasificacion" value="'.$filas['idClasificacion'].'" />
<td width="50" align="center" bgcolor="#CCCCCC">'.$clasificacion.'</td>
<td width="340" align="center"><input type="text" id="Club" name="Club" size="50" value="'.$filas['club'].'" /></td>
<td width="70" align="center"><input type="text" id="Puntos" name="Puntos" size="1" value="'.$filas['puntos'].'" /></td>
<td width="70" align="center"><input type="text" id="Jugados" name="Jugados" size="1" value="'.$filas['jugados'].'" /></td>
<td width="20" align="center"><input type="text" id="Ganados" name="Ganados" size="1" value="'.$filas['ganados'].'" /></td>
<td width="70" align="center"><input type="text" id="Empatados" name="Empatados" size="1" value="'.$filas['empatados'].'" /></td>
<td width="70" align="center"><input type="text" id="Perdidos" name="Perdidos" size="1" value="'.$filas['perdidos'].'" /></td>
<td width="70" align="center"><input type="text" id="GolesAfavor" name="GolesAfavor" size="1" value="'.$filas['golesAfavor'].'" /></td>
<td width="70" align="center"><input type="text" id="GolesEncontra" name="GolesEncontra" size="1" value="'.$filas['golesEncontra'].'" /></td>
<td width="70" align="center"><input type="text" id="Diferencia" name="Diferencia" size="1" value="'.$filasDiferencia.'" /></td>
</tr>';
}
?>

Me inserta perfectamente en la tabla pero me inserta esto...

UPDATE clasificacion SET club='grupo', puntos=6, jugados=5, ganados=8, empatados=2, perdidos=0, golesAfavor=6, golesEncontra=3, diferencia=0 WHERE idClasificacion=1 1
UPDATE clasificacion SET club='grupo', puntos=6, jugados=5, ganados=8, empatados=2, perdidos=0, golesAfavor=6, golesEncontra=3, diferencia=0 WHERE idClasificacion=2 2
UPDATE clasificacion SET club='grupo', puntos=6, jugados=5, ganados=8, empatados=2, perdidos=0, golesAfavor=6, golesEncontra=3, diferencia=0 WHERE idClasificacion=3 3
UPDATE clasificacion SET club='grupo', puntos=6, jugados=5, ganados=8, empatados=2, perdidos=0, golesAfavor=6, golesEncontra=3, diferencia=0 WHERE idClasificacion=4 4
UPDATE clasificacion SET club='grupo', puntos=6, jugados=5, ganados=8, empatados=2, perdidos=0, golesAfavor=6, golesEncontra=3, diferencia=0 WHERE idClasificacion=5
  #2 (permalink)  
Antiguo 20/08/2008, 19:19
Avatar de emiliodeg  
Fecha de Ingreso: septiembre-2005
Ubicación: Córdoba
Mensajes: 1.830
Antigüedad: 18 años, 7 meses
Puntos: 55
Respuesta: Problema envio de datos al actulizar!!

creo q el error esta aqui

...encia=$diferencia WHERE idClasificacion=".$filas['idClasificacion'];

cambiarlo por

...encia=$diferencia WHERE idClasificacion=".$idClasificacion;

recomendaciones
utilizar mysql_real_escape_string();
y los valores entre comillas simple update table set compo='valor'

saludos
__________________
Degiovanni Emilio
developtus.com
  #3 (permalink)  
Antiguo 21/08/2008, 07:53
 
Fecha de Ingreso: agosto-2008
Mensajes: 71
Antigüedad: 15 años, 8 meses
Puntos: 2
Respuesta: Problema envio de datos al actulizar!!

he probado lo que me has comentado, pero sigue haciendo lo mismo, es decir, recoje solo los campos de la ultima fila e inserta en todas los mismos resultados, la unica diferencia es que en vez de recoger cada id para cada fila utiliza la misma id para todas... estos son los resultados que da ahora:

UPDATE clasificacion SET club='grupo', puntos=7, jugados=7, ganados=7, empatados=7, perdidos=7, golesAfavor=7, golesEncontra=7, diferencia=3 WHERE idClasificacion=5
UPDATE clasificacion SET club='grupo', puntos=7, jugados=7, ganados=7, empatados=7, perdidos=7, golesAfavor=7, golesEncontra=7, diferencia=3 WHERE idClasificacion=5
UPDATE clasificacion SET club='grupo', puntos=7, jugados=7, ganados=7, empatados=7, perdidos=7, golesAfavor=7, golesEncontra=7, diferencia=3 WHERE idClasificacion=5
UPDATE clasificacion SET club='grupo', puntos=7, jugados=7, ganados=7, empatados=7, perdidos=7, golesAfavor=7, golesEncontra=7, diferencia=3 WHERE idClasificacion=5
UPDATE clasificacion SET club='grupo', puntos=7, jugados=7, ganados=7, empatados=7, perdidos=7, golesAfavor=7, golesEncontra=7, diferencia=3 WHERE idClasificacion=5

si se te ocurre otra cosa te lo agradeceria... un saludo
  #4 (permalink)  
Antiguo 21/08/2008, 08:18
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Respuesta: Problema envio de datos al actulizar!!

Hola futbolregional,

El problema es que estas enviando el mismo name en tus controles, por lo que las variables se sobreescriben, revisa en las FAQs, tienes que enviar los nombres con formato de arreglo:
Código HTML:
<input type="text" name="goles[]" value="4" /> 
Saludos.
  #5 (permalink)  
Antiguo 21/08/2008, 08:45
 
Fecha de Ingreso: agosto-2008
Mensajes: 71
Antigüedad: 15 años, 8 meses
Puntos: 2
Respuesta: Problema envio de datos al actulizar!!

creo que entiendo lo que dices.. seria crear un array... no? lo que no se exactamente como hacer eso... he intentado algo pero sin exito.. me podria echar una mano...?
  #6 (permalink)  
Antiguo 21/08/2008, 09:26
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Respuesta: Problema envio de datos al actulizar!!

Revisa en las FAQs del foro, ya se ha planteado el problema y como solucionarlo.

Saludos.
  #7 (permalink)  
Antiguo 21/08/2008, 09:32
 
Fecha de Ingreso: agosto-2008
Mensajes: 71
Antigüedad: 15 años, 8 meses
Puntos: 2
Respuesta: Problema envio de datos al actulizar!!

ok... estaba en ello.... es que hay un puñao.... un saludo...
  #8 (permalink)  
Antiguo 21/08/2008, 09:51
 
Fecha de Ingreso: agosto-2008
Mensajes: 71
Antigüedad: 15 años, 8 meses
Puntos: 2
Respuesta: Problema envio de datos al actulizar!!

lo siento gatorV pero no encuentro ninguno que crea que me pueda servir.. y te aseguro que los he visto de principio a fin...
  #9 (permalink)  
Antiguo 21/08/2008, 09:59
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Respuesta: Problema envio de datos al actulizar!!

http://www.forosdelweb.com/f18/faqs-...tml#post518710

Saludos.
  #10 (permalink)  
Antiguo 22/08/2008, 00:45
 
Fecha de Ingreso: agosto-2008
Mensajes: 71
Antigüedad: 15 años, 8 meses
Puntos: 2
Respuesta: Problema envio de datos al actulizar!!

gracias por el enviar directamente el FAQ's, he intentado hacerlo, pero me encuentro con otro problema, ahora si que a la hora de enviar envia los datos segun haya rellenado los campos, el resultado es:

Equipo 1 8 9 5 3 7 1 3 0
Equipo 2 9 6 4 9 2 4 6 0
Equipo 3 4 1 3 5 6 7 8 0
Equipo 4 6 8 4 5 3 2 7 0
Equipo 5 4 3 2 9 6 4 2 0

el problema es que me inserta en la base de datos... me da un error que es:

WHERE idClasificacion=1You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near

no se exactamente por donde seguir...

Última edición por futbolregional; 22/08/2008 a las 00:52
  #11 (permalink)  
Antiguo 22/08/2008, 08:54
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Respuesta: Problema envio de datos al actulizar!!

Checa tu SQL que este bien armado, al parecer tienes un error de sintaxis en tu SQL.

Saludos.
  #12 (permalink)  
Antiguo 23/08/2008, 02:50
 
Fecha de Ingreso: agosto-2008
Mensajes: 71
Antigüedad: 15 años, 8 meses
Puntos: 2
Respuesta: Problema envio de datos al actulizar!!

El codigo quedó asi....

while($filas=mysql_fetch_assoc($resultClasificacio n)){
$indice=1;
$indice=$clasificacion++;
$filasDiferencia=$filas['golesAfavor']-$filas['golesEncontra'];
if($_POST['enviar']){
$club=$_POST['seleccion[]'];
$puntos=$_POST['seleccion[]'];
$jugados=$_POST['seleccion[]'];
$ganados=$_POST['seleccion[]'];
$empatados=$_POST['seleccion[]'];
$perdidos=$_POST['seleccion[]'];
$golesAfavor=$_POST['seleccion[]'];
$golesEncontra=$_POST['seleccion[]'];
$idClasificacion=$_POST['seleccion[]'];
foreach ($_POST['seleccion'] as $id){
echo $id;
}

$sqlUpdate="UPDATE clasificacion SET club='$club', puntos=$puntos, jugados=$jugados, ganados=$ganados, empatados=$empatados, perdidos=$perdidos, golesAfavor=$golesAfavor, golesEncontra=$golesEncontra, diferencia=$diferencia WHERE idClasificacion=".$id['seleccion'];
echo ($sqlUpdate);
mysql_query($sqlUpdate,$idcon) or die (mysql_error());
}

incluso poniendo en el UPDATE ...... WHERE idClasificacion=".$idClasificacion['idClasificacion']; me sique saliendo el mismo error...
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 18:59.