Foros del Web » Programando para Internet » PHP »

editar datos de MySql pero.. dependiendo del numero de registros mostrados...

Estas en el tema de editar datos de MySql pero.. dependiendo del numero de registros mostrados... en el foro de PHP en Foros del Web. Creo que no se entendió muy bien el título. Lo explico con un ejemplo: Tengo una sección en que cada cada usuario puede registrar en ...
  #1 (permalink)  
Antiguo 15/04/2003, 19:47
Avatar de kctus
Usuario baneado!
 
Fecha de Ingreso: noviembre-2002
Ubicación: ToledoBsAsGaliciaBolivia
Mensajes: 1.038
Antigüedad: 21 años, 5 meses
Puntos: 1
editar datos de MySql pero.. dependiendo del numero de registros mostrados...

Creo que no se entendió muy bien el título.

Lo explico con un ejemplo:

Tengo una sección en que cada cada usuario puede registrar en MySql tantos conciertos como quiera, y quiero que luego los pueda editar.

Yo sabría hacerlo si siempre fuera el mismo número de conciertos (por ejemplo, hacer una página para editar 2 registros con un formulario por registro y ya está) pero el problema es que cada usuario puede tener una cantidad indeterminada de registros...

Por ejemplo uno tendrá una tabla con 7 filas (Cada fila un registro con distintos campos en las columnas) y otro quizas la tenga con 2.

Supongo que será con algún bucle, pero es que ando un poco verde con eso.

Un ayudita? gracias

Pd: ya tengo superado que cada usuario vea solo los registros que el mandó, por lo que el problema es solo que los pueda editar.

Última edición por kctus; 15/04/2003 a las 19:59
  #2 (permalink)  
Antiguo 15/04/2003, 20:29
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Pero donde tienes problemas? .. sabes generar el "link" tipo "editar" .. para que modifique ese registro?

Osese, para hacer tu consulta tipo:

SELECT * FROM tabla WHERE id='$id'

para luego hacer un

UPDATE table SET campo='$valor', etc ... WHERE id='$id'

O donde tienes problemas? ..

Mira, te recomiendo que leas este tutorial .. En los capítulos de Msyql con PHP veras ejemplos de lo que propones:
http://otri.us.es/recursosPHP/manual/index.htm

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #3 (permalink)  
Antiguo 15/04/2003, 20:33
Avatar de kctus
Usuario baneado!
 
Fecha de Ingreso: noviembre-2002
Ubicación: ToledoBsAsGaliciaBolivia
Mensajes: 1.038
Antigüedad: 21 años, 5 meses
Puntos: 1
mm.. si Cluster, como ya dije, yo se hacerlo pero solo si SE DE ANTEMANO lo que quiero editar.

El problema que yo tengo es que yo no puedo saber cuantos registros se van a mostrar y por lo tanto, cuantos registros se podrán editar.

Jo.. no entendiste el ejemplo? crei q era facil

Veras, cada usuario solo puede editar los conciertos que el mismo ha puesto, y ese número puede ser cualquiera! Entonces yo no puedo hacer un codigo que simplemente muestre los registros y los edite, porque no se cuantos serán.

Por eso creo que tiene algo que ver con bucles, no?
(mas claro ahora?)
  #4 (permalink)  
Antiguo 15/04/2003, 20:42
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Pero a ver ... cuando le presentas ese registro (el que hagas en tu SELECT * FROM tabla .. ) ahí debes de tener (si o SI) algun IDENTIFICATIVO que (valga la rebundacia) identifique a ese registro como UNICO .. Si, el Típico ID (autonumerico y único )


Lo que te decia es que ahí .. en ese LISTADO .. es donde tiens que ir generarndo un link tipo:

editar.php?id=nºregistro ..

Segun vas presentando esos registros factibles de editar .. justo para atacar en editar.php una série de consultas SQL tipo como las que puse ...

Un saludo,

Y si no es eso .. Pues empieza a poner TODO lo q tengas .. Código PHP, Estructura de tu BD (tablas y campos) y datos de ejemplo ..
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #5 (permalink)  
Antiguo 16/04/2003, 19:57
Avatar de kctus
Usuario baneado!
 
Fecha de Ingreso: noviembre-2002
Ubicación: ToledoBsAsGaliciaBolivia
Mensajes: 1.038
Antigüedad: 21 años, 5 meses
Puntos: 1
a, es que creo que lo enfocamos de distinta manera. Porque yo todo el rato pensaba en hacerlo con formularios, no pasando los datos por URL.

Bueno, trataré de explicarlo mejor

Por medio de una consulta que comprueba contraseña y usuario, el usuario solo puede ver los conciertos que el mismo añadio, para poder editarlos.

Este es el codigo que ahora mismo tengo para mostrar los resultados

Código PHP:
<table>
<tr> 
<th>Fecha</th>
<th>Localidad</th>
<th>Hora</th>
</tr>

<?php
//Mostramos los registros
while ($row=mysql_fetch_array($consulta))
{
?>
<tr>
<td><? echo $row["fecha"?></td>
<td><? echo $row["localidad"?></td>
<td><? echo $row["hora"?></td>
<?php
}
?>
</table>
Bien, entonces para poder actualizarlos, yo probe a hacerlo con formularios... poniendo esto:

Código PHP:

<form method="post" action="admin.php">

<table>
<tr> 
<th>Fecha</th>
<th>Localidad</th>
<th>Hora</th>
</tr>

<?php
//Mostramos los registros
while ($row=mysql_fetch_array($consulta))
{
?>
<tr>
<td><input type="text" name="fecha" value="<? echo $row["fecha"?>"></td>
<td><input type="text" name="localidad" value="<? echo $row["localidad"?>"></td>
<td><input type="text" name="hora" value="<? echo $row["hora"?>"></td>
<?php
}
?>
</table>
<input name="Editar" type="submit" value="Editar">
Y todo eso iba despues a la página admin.php en la cual ya estaba esta sentencia SQL:

Código PHP:
"Update nombre_de_la_tabla Set fecha='$fecha',localidad='$localidad',hora='$hora'"
Entonces claro el bucle crea tantos botones del formulario como conciertos tiene cada usuario... pero el problema es que al subir los datos, todos los conciertos pasan a tener los datos del último de ellos, debido supongo a que al tener varias repeticiones de nombres de formulario, al final solo valia el del último de ellos.

Resumiendo, que se donde está mi error, pero no como solucionarlo (quizas sea una tonteria.. pero no se me ocurre nada, lo siento)

Gracias Cluster (y a los demás que lo estais leyendo!)
  #6 (permalink)  
Antiguo 17/04/2003, 11:02
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Ok, ..

Bueno, hay dos técnicas para editar tus registros de un listado ..

1) .. la que te propongo .. Osese, en el listado que haces:
Código PHP:
<?php
//Mostramos los registros
while ($row=mysql_fetch_array($consulta))
{
?>
<tr>
<td><? echo $row["fecha"?></td>
<td><? echo $row["localidad"?></td>
<td><? echo $row["hora"?></td>
<td><a href="editar.php?id=<? echo $row["id"?>">editar este registro.</a></td>
<?php
}
?>
Como veras .. SE necesita un ID (identificador UNICO de ese registro .. ) No sé como tendras la estructura de esa tabla (SQL) pero necesitas SI o SI es campo ID (unico y autonumercio) .. que Identifique ese registro como diferente a los demas (unico).

En editar.php recoges el ID del registro y haces una consulta tipo:

Código PHP:
<?
$id
=$_GET['id']; //recoges el ID variable que te entra por GET (por el URL).

// haces una consulta SELECT * FROM tabla WHERE id='$id' para obtener ese UNICO registro q vas a editar ..
// Tu formulario lo generas como pusistes antes usando los campos Value ..

// AL editar (enviar al submit) .. envias a otro script o a la misma página (gestionanado alguna variable de control que indique el estado q está o debe hacer) .. Y haces tu UPDATE ..

"Update nombre_de_la_tabla Set  fecha='$fecha',localidad='$localidad',hora='$hora' WHERE id='$id'";
?>
Osese, si vas a editar SOLO un registro .. o ves que tienes muchos datos que editar .. Es recomendable que lo hagas así .. Lo mismo puedes poner mas "links (botones)" tipo Borrar este registro .. etc ..

2) .. Si quieres hacerlo todo de una vez (editar todos esos registros de una vez ..)

* Necesitas el famoso ID en tus tablas ..

* En todos los nombres de los campos de tu formualrio .. han de ser ARRAYS .. ademas .. el indice del array ha de ser un $contador (tipo $contador++) en tu bucle:
Código PHP:
$contador=0;
while(...) {
// etc tu código ..
 
$contador++;
 }; 
name="fecha[$contador]"
name="otrocampo[$contador]"
name="id[$contador]"
(así con todos)

* (por supuesto .. la definicion del formulario <form . .y cierrer del </form> .. ha de estar FUERA de tu bucle while que usas para mostrar todos esos regitros ..

* Donde edites esos registros .. necesitas recorrer esos arrays por ejemplo:

Código PHP:
for ($contador=0$contador <= count($id); $contador++){
   
$id=$id[$contador];
   
$fecha=$fecha[$contador]; 
   
$otrocampo=$otrocampo[$contador];

   
$sql="UPADATE tabla SET fecha='$fecha' .. etc con tus campos WHERE id='$id'"// Defines la consulta
   
mysql_query($sql) or die (mysql_error()); // ejecutas la consulta


Un salduo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.

Última edición por Cluster; 17/04/2003 a las 11:08
  #7 (permalink)  
Antiguo 17/04/2003, 19:52
Avatar de kctus
Usuario baneado!
 
Fecha de Ingreso: noviembre-2002
Ubicación: ToledoBsAsGaliciaBolivia
Mensajes: 1.038
Antigüedad: 21 años, 5 meses
Puntos: 1
Aja, pues muchas gracias Cluster

Aunque siempre he pretendido que se editaran todos a la vez... eso que me has dicho me ha sonado bastante a chino.. jeje, así que por ahora cojo la opción 1

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:28.