Comunidad de diseño web y desarrollo en internet online

Ayuda con UPDATE a dos tablas simultaneamente

Citar            
MensajeEscrito el 13 Feb 2008 11:01 am
Muy buenas a todos, llevo tiempo usando cristalab como ayuda y la verdad es que en mas de una ocasion me ha ayudado. bien, pues he dedcidido registrarme y participar de alguna manera, principalmene porque necesito ayuda y ya va siendo hora de que ademas de que cristalab me ayude a mi, pueda yo tmbien ayudar a alguien.

Mi problema es el siguiente:

Estoy programando una pagina web, en concreto la del C.D. Castellon y para la edicion de las fichas con los datos de los jugadores estoy utilizando un "inline text edit", para que puedan editar los jugadores desde la misma plantilla sin inputs ni marear la perdiz al cliente. Bien, mi problema comienza a la hora de los updates, tengo dos tablas para la ficha, una contiene los datos del jugador, tales como peso, altura, etc.. y la otra tabla contiene los datos de la trayectoria deportiva, usease, pj:
en la temporada 2001/2002 el jugador estubo en el Villareal C.F., en la temporada 2002/2003 el jugador estubo en el C.D. de mi pueblo.

(no entiendo de futbol, no me gusta, ni tengo zorra idea de ningun jugador, tan solo me dedico a programar lo que me piden, todo esto por si hay zumbao del futbol)

la pagina en si se llama editarficha.php, luego uso ajax para el "inline text edit" que me manda todos los datos a update.php que es donde tego el problema.

Si en el update, le digo que tan solo me actualice una tabla, ni un puñetero problema, en cuanto le digo que actualice dos a la vez me cruje. He estado probando varias cosas, hasta llegar al punto donde estoy. el codigo que tengo en estos momentos para hacer el update es el siguiente:

Código :

mysql_query("UPDATE plantilla, trayectoria SET plantilla.$fieldname = '$content', trayectoria.$fieldname = '$content' WHERE trayectoria.jugador = plantilla.id_jugador") or die("Error - ".mysql_error() );


Lo que me ocurre en editarficha.php es lo siguiente:

En un campo que deberia hacerme el update en la tabla platilla me dice: Error - Unknown column 'trayectoria.procedencia' in 'field list' y viceversa en la tabla que me deberia actualizar la tabla tryectoria me dice: Error - Unknown column 'plantilla.temporada' in 'field list'.

¿alguien tiene una ligera idea de como puedo solucionar el problema? o de ¿como realizar dos updates a la vez de otro modo?

Muchas gracias a todos por adelantado.

^^

Por Pelut

1 de clabLevel



Genero:Masculino  

Castellón

firefox
Citar            
MensajeEscrito el 13 Feb 2008 02:03 pm
En teoría tu sql no parece tener problemas, lo que me llama la atención es esa variable $fieldname, hazle un echo por separado para ver que contiene, es posible que no este tomando los valores adecuados y te este generando un error. Prueba a poner en directo el nombre del campo ahí.

Por Aoyama

BOFH

6224 de clabLevel

6 tutoriales
12 articulos

Genero:Masculino   Anime Bloggers Bastard Operators From Hell

Webdesigner & Developer, en mis ratos libres bebo café por litros.

firefox
Citar            
MensajeEscrito el 13 Feb 2008 02:37 pm
Te comento:

La variable $fieldname es, por decirlo de alguna manera y sin ser asi, los inputs de los campos que queramos actualizar, a ver si logro explicarme. Lo que hace Ajax en la pagina es, primero buscar todos los "span" que hay en la pagina, si el "span" contiene la clase " class="editText" " cuando tu pinchas sobre el texto, te lo convierte en un "input" y a continuacion te deja editarlo, cuando has acabado y pulsas intro o pinchas en cualquier parte no editable de la pagina, coje el "id" del "span" la variable "$id_jugador" (parqa saber a que jugador pertenece) y la variable "$nombre" (todo esto es en este caso) y me la manda a update.php

<span id="nombre-|||-<?php echo $row['id_jugador']; ?>" class="editText" ><?php echo $row['nombre']; ?></span>

En este caso el $fieldname seria el "nombre", y me mandaria a update.php $nombre, e "$id_jugador".

Por lo que actualizaria el campo nombre del jugador Nº X

y se procederia a realizar el sql.

El echo $fieldname me lo hace al final para volver a mostrar el contenido del valor del campo que he actualizado, y mostrarlo en la pagina de nuevo sin recargarla. (mediante ajax, claro esta)

Por Pelut

1 de clabLevel



Genero:Masculino  

Castellón

msie7
Citar            
MensajeEscrito el 20 Feb 2008 11:10 pm
Bueno, como creo que realmente dos tablas a la vez es una cosa que fisicamente no creo que sea posible, por que creo que aunque le digamos: "UPDATE tabla1, tabla2 WHERE condicion...", lo que hace es que depende de que registro llega, actualiza una tabla u otra o primero una y luego orta.

Pues lo que se me ha ocurrido es lo siguiente:

<?

//Conexion a la base de datos

$content = $_GET['content'];
list($tabla,$fieldname, $id) = explode("-|||-",$_GET['fieldname']);
if ($tabla=='trayectoria')$where=" WHERE id = '$id'";
else $where=" WHERE id_jugador = '$id'";
//echo "UPDATE $tabla SET $fieldname = '$content' $where";
mysql_query("UPDATE $tabla SET $fieldname = '$content' $where") or die("Error - ".mysql_error());
$result = mysql_query("SELECT * FROM $tabla $where");
$row = mysql_fetch_assoc($result);
echo $row["{$fieldname}"];
?>

Me explico: le he pasado la variable tabla, la variable campo y la variable id, entonces si me llega $tabla=plantilla actualizo el campo de la tabla plantilla, si no, pues de trayectoria.

Espero haber ayudado algo a alguien. Para una explicacion mejor ponerse en contacto conmigo, no es que sea un lumbreras axplicandome.

Por Pelut

1 de clabLevel



Genero:Masculino  

Castellón

msie7
Citar            
MensajeEscrito el 21 Feb 2008 02:57 am
Al ver tu código puedo ver que eres eficiente encontrando soluciones, pero tu código es bastante confuso. Te recomendaría que buscaras la forma de limpiar un poco tu código para que no se vea tan apretado y que vayas buscando algunas técnicas distintas de programación como la POO que no suele ser tan eficiente en cuanto a líneas de código pero si en cuanto a orden y reutilización. Es solo un comentario y una sugerencia, cada quien programa de la manera que se sienta más comodo.

Tu problema inicial podría haberse solucionado utilizando un array con las variables de $fieldname que contendría las querys correctas para cada variable ( o los fragmentos de la query ) y así no buscaras campos que no existen en una de las dos tablas.

Por Odin

Claber

639 de clabLevel

2 tutoriales

Genero:Masculino   Premio_Secretos

El valle de las hamacas

firefox
Citar            
MensajeEscrito el 21 Feb 2008 02:57 pm
Hola, haz probado usando join?

Por Kamina Sama

16 de clabLevel



 

opera

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.