Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] solo actualiza el ultimo registro

Estas en el tema de solo actualiza el ultimo registro en el foro de PHP en Foros del Web. Hola gente, a ver si me pueden echar una mano por que ya no le encuentro mas vueltas. hago una consulta a la base de ...
  #1 (permalink)  
Antiguo 19/01/2013, 18:49
 
Fecha de Ingreso: agosto-2008
Ubicación: Miami, FL
Mensajes: 210
Antigüedad: 15 años, 7 meses
Puntos: 2
Pregunta solo actualiza el ultimo registro

Hola gente, a ver si me pueden echar una mano por que ya no le encuentro mas vueltas.

hago una consulta a la base de datos y listo los resultados. Lo logico seria que para actualizar los datos abriera un formulario cargando estos datos, pero lo hago en el mismo paso.
Todo funciona bien, pero solo me actualiza el ultimo registro y no los anteriores.
A ver si alguien puede echarme una mano, ya he buscado y releído pero no lo puedo solucionar.

Código PHP:
Ver original
  1. //1. Crear conexión a la Base de Datos
  2. $conexion = mysql_connect("host","user","pass");
  3. if (!$conexion) {
  4. die("Fallo la conexión a la Base de Datos: " . mysql_error());
  5. }
  6. //2. Seleccionar la Base de Datos a utilizar
  7. $seleccionar_bd = mysql_select_db("db", $conexion);
  8. if (!$seleccionar_bd) {
  9. die("Fallo la selección de la Base de Datos: " . mysql_error());
  10. }
  11.  
  12.  
  13. $seleccionar = mysql_query("SELECT * FROM playing_today");
  14. if (!$seleccionar) {
  15. die("Fallo en la seleccion de registro en la Base de Datos: " . mysql_error());
  16. }        
  17.  
  18. echo"
  19. <form action='actualizar_player_price.php' method='POST'>
  20.  <table border=0 id=mytable cellspacing=0>
  21.    <tr class='spec'>
  22.      <th align=center width='20'>ID</th>
  23.      <th align=center>Player Name</th>
  24.      <th class='title'>Prev. Owed</th>
  25.      <th class='title'>Court Rental</th>
  26.      <th class='title'>Pala Rental</th>
  27.      <th class='title'>Beberage</th>
  28.      <th class='title'>Lesson</th>
  29.      <th class='title'>Pala Sale</th>
  30.      <th class='title'>Balls</th>
  31.      <th class='title'>Overgrip</th>
  32.      <th class='title'>Food</th>
  33.      <th class='title'>Other</th>
  34.      <th class='title'>Total</th>
  35.      <th class='title2'>Paid</th>
  36.      <th class='title2'>Curr. Owed</th>
  37.      <th class='title2'>Update</th>
  38.      <th class='title2'>Close</th>
  39.    </tr>
  40.  
  41. ";
  42.  
  43.  while ($fila = mysql_fetch_array($seleccionar))
  44.       {  
  45.  
  46.       $po = $fila['prev_owed'];
  47.       $ct = $fila['court_price'];
  48.       $pr = $fila['pala_rental_price'];
  49.       $bb = $fila['beberage_price'];
  50.       $le = $fila['lesson_price'];
  51.       $ps = $fila['pala_sale_price'];
  52.       $ba = $fila['balls_price'];
  53.       $og = $fila['overgrip_price'];
  54.       $fo = $fila['food_price'];
  55.       $ot = $fila['other'];
  56.       $pd = $fila['paid'];
  57.       $rt = $fila['rest'];
  58.  
  59.       $suma = $ct+$pr+$bb+$le+$ps+$ba+$og+$fo+$ot;
  60.       $rest = $suma-$pd;
  61.       $final = $rest+$po;
  62.  
  63. echo"
  64.  <tr class='spec' >
  65.    <td align=center width='20'>".$fila['personalID']."</td>
  66.    <td align=center width='170'>".$fila['first_name']." ".$fila['last_name']."</td>
  67.    <td align=center width='20'>".$fila['prev_owed']."</td>
  68.    <td align=center width='20'><input type='text' name='court_price' value='".$fila['court_price']."' size=5 /></td>
  69.    <td align=center width='20'><input type='text' name='pala_rental_price' value='".$fila['pala_rental_price']."' size=5 /></td>
  70.    <td align=center width='20'><input type='text' name='beberage_price' value='".$fila['beberage_price']."' size=5 /></td>
  71.    <td align=center width='20'><input type='text' name='lesson_price' value='".$fila['lesson_price']."' size=5 /></td>
  72.    <td align=center width='20'><input type='text' name='pala_sale_price' value='".$fila['pala_sale_price']."' size=5 /></td>
  73.    <td align=center width='20'><input type='text' name='balls_price' value='".$fila['balls_price']."' size=5 /></td>
  74.    <td align=center width='20'><input type='text' name='overgrip_price' value='".$fila['overgrip_price']."' size=5 /></td>
  75.    <td align=center width='20'><input type='text' name='food_price' value='".$fila['food_price']."' size=5 /></td>
  76.    <td align=center width='20'><input type='text' name='other' value='".$fila['other']."' size=5 /></td>";
  77.     echo "  
  78.    <td align=center width='20'>";echo " ".$suma." "; echo"
  79.    <td align=center width='20'><input type='text' name='paid' value='".$fila['paid']."' size=5 /></td>
  80.    <td align=center width='20'>";echo " ".$final." "; echo"</td>
  81.    <td align=center width='20'><input type='submit'></td>
  82.    <td align=center width='20'><a href='#'>Close</a></td>
  83.  </tr>
  84. ";
  85.  
  86. $_SESSION['personalID'] = $fila['personalID'];
  87. }
  88.  
  89. echo "</tabla></form>";
  90.  
  91. mysql_close($conexion);
__________________
Se invierte mas dinero en cirugía de pechos y viagra que en la cura del Alzheimer. En unos años tendremos viejas con grandes tetas y viejos con erecciones pero que no recordarán para que sirven..
  #2 (permalink)  
Antiguo 19/01/2013, 18:58
Avatar de dashtrash
Colaborador
 
Fecha de Ingreso: abril-2007
Ubicación: Ni en Sevilla,ni en Sanlúcar..qué más da..
Mensajes: 927
Antigüedad: 17 años
Puntos: 270
Respuesta: solo actualiza el ultimo registro

La tabla generada tiene varias columnas.En cada columna, hay una serie de inputs.
Todos esos inputs, tienen el mismo nombre, por lo que los inputs de una fila, "pisan" a los inputs de la fila anterior.
Añade un índice a los nombres de todos los inputs, como si fueran arrays, de forma que queden name="court_price[0]", name="court_price[1]"...etc.

Ten en cuenta, que en el PHP que procesa el formulario, $_POST["court_price"] (y de todos los inputs) serán arrays, no valores simples.
  #3 (permalink)  
Antiguo 19/01/2013, 19:13
 
Fecha de Ingreso: agosto-2008
Ubicación: Miami, FL
Mensajes: 210
Antigüedad: 15 años, 7 meses
Puntos: 2
Respuesta: solo actualiza el ultimo registro

Hola dashtrash,

mmm, los input no tienen todos el mismo nombre.

name="court_price"
name="pala_rental_price"
name="beberage_price"
......

cada input tiene un nombre unico.

Alguna otra idea?
__________________
Se invierte mas dinero en cirugía de pechos y viagra que en la cura del Alzheimer. En unos años tendremos viejas con grandes tetas y viejos con erecciones pero que no recordarán para que sirven..
  #4 (permalink)  
Antiguo 19/01/2013, 19:18
Avatar de dashtrash
Colaborador
 
Fecha de Ingreso: abril-2007
Ubicación: Ni en Sevilla,ni en Sanlúcar..qué más da..
Mensajes: 927
Antigüedad: 17 años
Puntos: 270
Respuesta: solo actualiza el ultimo registro

Los nombres son unicos en cada fila de la tabla.
Cuántas filas tiene tu tabla?
  #5 (permalink)  
Antiguo 19/01/2013, 19:23
Avatar de andresdzphp
Colaborador
 
Fecha de Ingreso: julio-2011
Ubicación: $this->Colombia;
Mensajes: 2.749
Antigüedad: 12 años, 8 meses
Puntos: 793
Respuesta: solo actualiza el ultimo registro

Lo que te dijo dashtrash en el #2 es cierto. En cada vuelta del while generas varios input repetidos, vas a tener muchos input name='court_price' por cada registro y sólo toma 1.

Los input deberías cambiarlos de name='court_price' a name='court_price[]' y luego recorrer estos array para insertar.
__________________
Si sabemos como leer e interpretar el manual será mucho más fácil aprender PHP. En lugar de confiar en ejemplos o copiar y pegar - PHP
  #6 (permalink)  
Antiguo 19/01/2013, 19:30
 
Fecha de Ingreso: agosto-2008
Ubicación: Miami, FL
Mensajes: 210
Antigüedad: 15 años, 7 meses
Puntos: 2
Respuesta: solo actualiza el ultimo registro

no, a ver, tu pusiste:

Todos esos inputs, tienen el mismo nombre,....

tienes razon en que los imput the las filas se van a pisar y ese es el problema, lo entiendo.

Lo miro y te comento.

Chas gracias por tu tiempo.
__________________
Se invierte mas dinero en cirugía de pechos y viagra que en la cura del Alzheimer. En unos años tendremos viejas con grandes tetas y viejos con erecciones pero que no recordarán para que sirven..
  #7 (permalink)  
Antiguo 19/01/2013, 19:37
Avatar de dashtrash
Colaborador
 
Fecha de Ingreso: abril-2007
Ubicación: Ni en Sevilla,ni en Sanlúcar..qué más da..
Mensajes: 927
Antigüedad: 17 años
Puntos: 270
Respuesta: solo actualiza el ultimo registro

Lo que puse fue:
Cita:
La tabla generada tiene varias columnas.En cada columna, hay una serie de inputs.
Todos esos inputs, tienen el mismo nombre
Todos los inputs que existen en la misma columna, tienen el mismo nombre.
  #8 (permalink)  
Antiguo 20/01/2013, 16:08
 
Fecha de Ingreso: julio-2012
Mensajes: 22
Antigüedad: 11 años, 8 meses
Puntos: 3
Respuesta: solo actualiza el ultimo registro

Primero desoler te recomiendo que hagas un script conexion.php y metas alli el codigo de conexion a la BD y el formulario donde haces tu consulta igual separalo del frmulario donde mostraras los resultados de tus consultas.
  #9 (permalink)  
Antiguo 21/01/2013, 18:45
 
Fecha de Ingreso: agosto-2008
Ubicación: Miami, FL
Mensajes: 210
Antigüedad: 15 años, 7 meses
Puntos: 2
Respuesta: solo actualiza el ultimo registro

tony_la09,

generalmente lo hago de la forma que tu dices, pero esta persona lo quiere de esta manera por eso es que se me ha complicado mas, si no, de la otra manera puedo pasar las variables por POST y mucho mas facil.

Con respecto a la solucion de poner name="court_price[]" y recuperarlo como variable.
ya lo he echo pero no puedo recuperar las variables.
Este es el codigo que utilizo para recuperar:
Código PHP:
Ver original
  1. if(isset($_POST['court_price']))
  2.     {
  3.       $seleccion=$_POST['court_price'];
  4.       foreach($seleccion as $indice => $court_price)
  5.       {
  6.       echo "<span style='font-size:11px;font-family:verdana;'> ".$court_price." </span> ";
  7.       }
  8.       }

esto me imprime el valor pero de todas las filas, no se como recuperar solo la de la fila que selecciono, no se si me explico.

Alguna ayuda por favor, hace 4 dias que estoy con esto y no lo puedo solucionar.

Gracias de antemano por el tiempo prestado.
__________________
Se invierte mas dinero en cirugía de pechos y viagra que en la cura del Alzheimer. En unos años tendremos viejas con grandes tetas y viejos con erecciones pero que no recordarán para que sirven..
  #10 (permalink)  
Antiguo 21/01/2013, 20:18
Avatar de andresdzphp
Colaborador
 
Fecha de Ingreso: julio-2011
Ubicación: $this->Colombia;
Mensajes: 2.749
Antigüedad: 12 años, 8 meses
Puntos: 793
Respuesta: solo actualiza el ultimo registro

Cita:
Iniciado por desoler Ver Mensaje
esto me imprime el valor pero de todas las filas, no se como recuperar solo la de la fila que selecciono, no se si me explico.
A que te refieres con seleccionar si son input text. Te refieres a llenar los campos y quieres comprobar que no vengan vacíos?
__________________
Si sabemos como leer e interpretar el manual será mucho más fácil aprender PHP. En lugar de confiar en ejemplos o copiar y pegar - PHP
  #11 (permalink)  
Antiguo 21/01/2013, 21:13
 
Fecha de Ingreso: agosto-2008
Ubicación: Miami, FL
Mensajes: 210
Antigüedad: 15 años, 7 meses
Puntos: 2
Respuesta: solo actualiza el ultimo registro

hola andrezdzphp,

Si miras mi primer post, el codigo que ahi puse genera un listado desde una base de datos.
ese listado tiene unos input donde carga unos valores. Lo que yo quiero hacer es modificar
estos valores y al presionar el boton submit el codigo php me actualiza el registro que seleccione.
Como los valores de los imput eran del tipo name="court_price" lo que pasaba es que se superponian
al listarlos y solo podia modificar el ultimo de los registros.
Un compañero de aqui me dijo que tenia que convertilos en array name="court_price[]" y luego recuperar esos array.
El codigo de mi ultimo post es el codigo que recupera estos array pero cuando presiono submit me recupera todos los input del mismo nombre, y no los imput del registro que seleccioné, no se si me explico bien.

Gracias
__________________
Se invierte mas dinero en cirugía de pechos y viagra que en la cura del Alzheimer. En unos años tendremos viejas con grandes tetas y viejos con erecciones pero que no recordarán para que sirven..
  #12 (permalink)  
Antiguo 21/01/2013, 21:48
Avatar de andresdzphp
Colaborador
 
Fecha de Ingreso: julio-2011
Ubicación: $this->Colombia;
Mensajes: 2.749
Antigüedad: 12 años, 8 meses
Puntos: 793
Respuesta: solo actualiza el ultimo registro

Cita:
esto me imprime el valor pero de todas las filas, no se como recuperar solo la de la fila que selecciono, no se si me explico.
Cuál fila que seleccionas? dónde?

Estás seleccionando todos los registros o no?

Código PHP:
Ver original
  1. $seleccionar = mysql_query("SELECT * FROM playing_today");
__________________
Si sabemos como leer e interpretar el manual será mucho más fácil aprender PHP. En lugar de confiar en ejemplos o copiar y pegar - PHP
  #13 (permalink)  
Antiguo 21/01/2013, 22:06
 
Fecha de Ingreso: agosto-2008
Ubicación: Miami, FL
Mensajes: 210
Antigüedad: 15 años, 7 meses
Puntos: 2
Respuesta: solo actualiza el ultimo registro

ok, a ver si me explico.

Con esto selecciono todos los datos:

Código PHP:
Ver original
  1. $seleccionar = mysql_query("SELECT * FROM playing_today");

que me genera un listado de varias filas que contiene varias columnas cada una con un imput que recupera un valor desde la base de datos.
Todas las filas tienen los imput con los mismos nombres, pero un compañero me dijo que deberia convertirlos a array con (ejemplo de un solo input) name="court_price[]".

Primero, debo generar un los array, yo creo que asi:

Código PHP:
Ver original
  1. foreach($court_price as $i => $valor_court_price){}

ahora, en el input como deberia ponerlo?

Código PHP:
Ver original
  1. <input type="text" name="$valor_court_price[]" value="$court_price" />

de esta forma imagino que tendre varias filas con los input tipo $valor_court_price[0], $valor_court_price[1], etc

bien, cuando yo modifico un valor de uno de esos input y presiono submit necesito actualizar ese valor en la base de datos solamente de la fila en la que he presionado submit.

ahora, como hago para recuperar ese array $valor_court_price[0] o ...[1].. etc y modificar el registro?

yo siempre lo he echo asi:

se seleccionan los datos de la db y se imprimen, por post se envian los datos a un formulario que donde se puede modificar los valores, se le da "modificar" y hace el update, al volver a la pagina anterior se muestran los registros modificados, punto. pero en este caso necesito hacerlo en un solo paso.

Gracias y perdon po extenderme tanto.
__________________
Se invierte mas dinero en cirugía de pechos y viagra que en la cura del Alzheimer. En unos años tendremos viejas con grandes tetas y viejos con erecciones pero que no recordarán para que sirven..
  #14 (permalink)  
Antiguo 21/01/2013, 22:26
 
Fecha de Ingreso: agosto-2008
Ubicación: Miami, FL
Mensajes: 210
Antigüedad: 15 años, 7 meses
Puntos: 2
Respuesta: solo actualiza el ultimo registro

no te entiendo,
Mira, el primer post que puse con el codigo genera esto:


ahi yo necesito modificar los valores de los inputs y al darle submit que me actualize los valores del usuario seleccionado.
__________________
Se invierte mas dinero en cirugía de pechos y viagra que en la cura del Alzheimer. En unos años tendremos viejas con grandes tetas y viejos con erecciones pero que no recordarán para que sirven..
  #15 (permalink)  
Antiguo 21/01/2013, 22:42
Avatar de andresdzphp
Colaborador
 
Fecha de Ingreso: julio-2011
Ubicación: $this->Colombia;
Mensajes: 2.749
Antigüedad: 12 años, 8 meses
Puntos: 793
Respuesta: solo actualiza el ultimo registro

Mete tu:

Código HTML:
Ver original
  1. <form action='actualizar_player_price.php' method='POST'>

dentro del while y cierra el formulario </form> antes de cerrar el while y prueba.

En un sólo formulario se te van a pisar.
__________________
Si sabemos como leer e interpretar el manual será mucho más fácil aprender PHP. En lugar de confiar en ejemplos o copiar y pegar - PHP
  #16 (permalink)  
Antiguo 21/01/2013, 22:56
 
Fecha de Ingreso: agosto-2008
Ubicación: Miami, FL
Mensajes: 210
Antigüedad: 15 años, 7 meses
Puntos: 2
Respuesta: solo actualiza el ultimo registro

haciendo asi como dices, me actualiza solo la ultima fila.
Creo que por eso me dijeron que hiciera los name con array, pero no se como, ya estoy mas que mareado.
__________________
Se invierte mas dinero en cirugía de pechos y viagra que en la cura del Alzheimer. En unos años tendremos viejas con grandes tetas y viejos con erecciones pero que no recordarán para que sirven..
  #17 (permalink)  
Antiguo 21/01/2013, 22:59
Avatar de andresdzphp
Colaborador
 
Fecha de Ingreso: julio-2011
Ubicación: $this->Colombia;
Mensajes: 2.749
Antigüedad: 12 años, 8 meses
Puntos: 793
Respuesta: solo actualiza el ultimo registro

Muestra el código con el que estás actualizando.

Cada formulario debe llevar un campo de tipo hidden con el value de $fila['personalID'], al actualizar debes decirle que vas a actualizar este id
__________________
Si sabemos como leer e interpretar el manual será mucho más fácil aprender PHP. En lugar de confiar en ejemplos o copiar y pegar - PHP
  #18 (permalink)  
Antiguo 21/01/2013, 23:09
 
Fecha de Ingreso: agosto-2008
Ubicación: Miami, FL
Mensajes: 210
Antigüedad: 15 años, 7 meses
Puntos: 2
Respuesta: solo actualiza el ultimo registro

ahora si, se me habia pasado el name en el input hidden y no me tomaba el valor.

Muchisimas gracias por tu tiempo, a sido muy valioso tu aporte.
__________________
Se invierte mas dinero en cirugía de pechos y viagra que en la cura del Alzheimer. En unos años tendremos viejas con grandes tetas y viejos con erecciones pero que no recordarán para que sirven..

Etiquetas: php+bd+mysql
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 08:29.