Foros del Web » Programando para Internet » PHP »

Inquietud : ¿Cómo relleno un campo de una tabla?

Estas en el tema de Inquietud : ¿Cómo relleno un campo de una tabla? en el foro de PHP en Foros del Web. El caso es que tengo una tabla llamada "descargas", y quiero que en uno de los campos llamado "numero" pueda rellenarlo con valores numéricos, pero ...
  #1 (permalink)  
Antiguo 02/10/2003, 23:52
 
Fecha de Ingreso: octubre-2003
Mensajes: 55
Antigüedad: 14 años, 2 meses
Puntos: 0
Pregunta Inquietud : ¿Cómo relleno un campo de una tabla?

El caso es que tengo una tabla llamada "descargas", y quiero que en uno de los campos llamado "numero" pueda rellenarlo con valores numéricos, pero que vayan de 2 en 2, Creo que ya entienden mi idea. es como un autoincremento, o podría ser de 5 en 5, bueno algo así.

En toda internet no hablan de este tema...

bueno gracias.
  #2 (permalink)  
Antiguo 03/10/2003, 00:00
Avatar de nuevo  
Fecha de Ingreso: mayo-2003
Ubicación: Spain
Mensajes: 2.009
Antigüedad: 14 años, 6 meses
Puntos: 2
pero el campo ese no es el primero verdad,,, osea no es el ID real de la BD?, verdad, es otro id que usas independientemente del ID primario.... o no usas ID primario??
__________________
3w.valenciadjs.com
3w.laislatv.com
  #3 (permalink)  
Antiguo 03/10/2003, 00:08
 
Fecha de Ingreso: octubre-2003
Mensajes: 55
Antigüedad: 14 años, 2 meses
Puntos: 0
De acuerdo NO ES EL PRIMARIO.

No es el primario, tengo mi indice como un un campo llamado"id", pero quiero hacer el relleno de datos en un otro campo llamado "numero" .

------- gracias ----------

Última edición por lordchile; 03/10/2003 a las 15:01
  #4 (permalink)  
Antiguo 03/10/2003, 15:04
 
Fecha de Ingreso: octubre-2003
Mensajes: 55
Antigüedad: 14 años, 2 meses
Puntos: 0
¿alguien me puede ayudar?

que alguien me ayude!!!!!! :-p
  #5 (permalink)  
Antiguo 04/10/2003, 00:14
 
Fecha de Ingreso: octubre-2003
Mensajes: 55
Antigüedad: 14 años, 2 meses
Puntos: 0
¿nadie?
  #6 (permalink)  
Antiguo 04/10/2003, 02:37
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Actualiza el dato del campo tipo:

Código PHP:
$sql="UPDATE tabla SET campo=campo+2 WHERE id=".$id;
mysql_query($sql); 
En mysql se pueden hacer cosas como el caso: lee el campo y pon ahí el valor que tenga + 2 o lo que quieras .. o lo restas .. o sumas dos campos y lo divides .. o .. o .. cualquier operación .. Y no sólo con "numeros" .. también se puede hacer con "cadenas" (strings) .. Sólo hay que leer el manual de SQL de Msyql (que no todo se hace con PHP si estás trabajando con una BD ..)

Para más info:
www.mysql.com

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #7 (permalink)  
Antiguo 04/10/2003, 11:07
 
Fecha de Ingreso: octubre-2003
Mensajes: 55
Antigüedad: 14 años, 2 meses
Puntos: 0
Creo que no me han entendido

Gracias Cluster,

Pero lo que realmente quiero es esto...
(Espero salga como quiero.)

Lo que ocurre es que si elimino una fila ya perderé el orden correlativo del campo id y es por eso que necesito que en otro campo dejar el correlativo de todas las filas... Entonces cuando elimine una fila, quiero que en el campo numero. se cambien todos los valores para que aparezca correlativo... desde la fila 0 hasta la última.. 1..2..3..4.. Creo que con el siguiente grafico lo explicaré...
Sólo necesito el código para rellenar el campo numero. con valores correlativos.



| id | nom | code |numero|
------+-------+-------+------+
| 1 | luis | f200 | 1 |
| 2 | sara | e225 | 2 |
| 3 | jose | e226 | 3 |
| 5 | paul | c100 | 4 |
| 8 | mark | e211 | 5 |
| 10 | pepe | b099 | 6 |
| 88 | poli | t101 | 7 |



Como muestra la tabla, faltan varios id que han sido eliminados, pero en el campo numero. el correlativo sique intacto y es eso lo que realmente necesito.

¿cómo puedo hacer un script que me permita barrer todos los datos del campo numero. y escribirlos de nuevo en correlativo?


Gracias,, espero que ahora si me entiendan..


Un saludo a todos!!!!



  #8 (permalink)  
Antiguo 06/10/2003, 23:19
 
Fecha de Ingreso: octubre-2003
Mensajes: 55
Antigüedad: 14 años, 2 meses
Puntos: 0
Desacuerdo

¿que pasa?

¿Nadie tiene la capacidad para ayudarme?
  #9 (permalink)  
Antiguo 07/10/2003, 00:55
Avatar de jpinedo
Colaborador
 
Fecha de Ingreso: septiembre-2003
Ubicación: Lima, Perú
Mensajes: 3.120
Antigüedad: 14 años, 2 meses
Puntos: 41
Una idea

Hola lordchile:
Mira, se me ocurre que puedes hacer una consulta de este tipo:

Código PHP:
$servidor="localhost";
$usuario="tu_user";
$password="tu_pass"
$base="tu_base";
$con mysql_connect($servidor,$usuario,$password) or die ("Error en la conexión con BD".mysql_error()); 
mysql_select_db($base,$con);
 
$query="SELECT * FROM descargas ORDER BY id asc"
$result=mysql_query($query$con);

$num=0;
while(
$row=mysql_fetch_array($result) or die(mysql_error()))
{
    
$num++;
    
$sql="UPDATE descargas SET numero=$num WHERE id=".$row[0];
    
mysql_query($sql,$con);
};
mysql_close($con); 
Lo probé y funciona... pero fácil que hay alguna forma de no tener que recorrer toda la tabla... este script lo tienes que ejecutar cuando borres algún registro...

espero te sirva... aunque sea como punto de partida... y si lo mejoras, publícalo...

Saludos
  #10 (permalink)  
Antiguo 07/10/2003, 01:33
Avatar de jpinedo
Colaborador
 
Fecha de Ingreso: septiembre-2003
Ubicación: Lima, Perú
Mensajes: 3.120
Antigüedad: 14 años, 2 meses
Puntos: 41
Otra cosa... un poquito de humildad... que los foros están hechos para ayudarnos mutuamente... no se trata de retar a la "capacidad de las personas"... estoy segurísimo que Cluster o josemi o cualquier otro tiene la respuesta que buscas.. pero tal vez no han tenido tiempo de responder... además, con esa actitud como que ni dan ganas de ayudar... de todas formas me cuentas qué tal te fue con mi solución, que yo mismo voy a tratar de mejorar.
Saludos otra vez.
  #11 (permalink)  
Antiguo 07/10/2003, 03:53
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 15 años, 5 meses
Puntos: 16
Hola,

La verdad que la pregunta original tiene poco que ver con la explicacion detallada que das casi al final.

Mira, la solucion es sencilla. Simplemente tienes que planteartelo desde otro punto de vista. Tu lo que quieres es que el campo de todos los registros con 'Numero' superior al del registro eliminado, se decremente en 1 (si eliminamos el que tiene numero =5, queremos que el numero =6 pase a 5, el 7 a 6, ...). Eso lo puedes hacer con una simple SQL:

UPDATE tabla SET numero=numero-1 WHERE numero>numero_del_registro_borrado

Haciendo esta actualizacion a la vez del borrado te aseguras que sigan correlativos.

O al menos este creo que es tu problema.

Yo lo uso cuando tengo un campo 'Posicion' para ordenar a voluntad una lista.

El codigo de jpinedo sirve siempre y cuando el orden lo de el id.

Saludos.

PD: Si quieres respuestas rapidas, contacta con un servicio tecnico. Estos foros son voluntarios y creo que en ningun sitio pone que se te garantiza una respuesta. Comprendo que cada uno piensa que su problema es el mas urgente.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #12 (permalink)  
Antiguo 07/10/2003, 10:53
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
La pregunta del "millón" ..
¿Realmente vas a usar ese "numero" como indentificador o para ordenar por;... etc?

Por qué .. si no es así .. y sólo quieres mostrar ese "contador" de registros .. sólo necesitarías usar una variable "contador" en tu bucle .. donde muestres y obtengas esos registros:

Código PHP:
while (....){
// etc ...
echo $contador." --> ".$row['nose'];
$contador++;

pero, lo que mandaría es tu identificador .. ese "id" autonumérico a efectos de borrados/ediciones .. etc de tu registro.

Y .. Si lo que pretendes es ordenar esa presentación de registros con un orden definido manualmente por tí sin atender al orden correlativo y autoincremental que crea ese "ID" .. usa lo que te mencionó josemi: un campo extra que indiques el orden y .. al hacer tus "select" ordenas por ese campo "ORDER BY campo_extra_orden"...

PD: Y ... lo dicho .. forosdelweb.com no es una consultoría privada .. La gente que participa lo hace por amor al arte con todaa su buena voluntad, así que respetala. Cuantos más detalles des de tu problema mejor se podrán ver soluciones. Tu sabras que es lo que deseas obtener .. pero recuerda que no somos adivinos así que esfuerzate por explicar tu problema.
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #13 (permalink)  
Antiguo 08/10/2003, 03:30
Avatar de jpinedo
Colaborador
 
Fecha de Ingreso: septiembre-2003
Ubicación: Lima, Perú
Mensajes: 3.120
Antigüedad: 14 años, 2 meses
Puntos: 41
De acuerdo Gracias josemi y cluster...

Es verdad que con esta línea es suficiente

Cita:
UPDATE tabla SET numero=numero-1 WHERE numero>numero_del_registro_borrado
mi observación es la siguiente:

Como el campo "numero" no es auto-increment, quiere decir que uno le puede poner cualquier valor cuando ingresa un nuevo registro... entonces no serán necesariamente consecutivos y si ejecutamos la línea que pones seguirán sin ser consecutivos...

Pero lordchile: estamos adivinando qué quisiste decir... tal vez si explicaras un poco mejor lo que necesitas sería todo más fácil.

Josemi tiene razón en decir que entre tu mensaje original y el último en el que "lo explicas detalladamente" hay una gran diferencia. De todas maneras, si lo que quieres es tomar el id como referencia para ordenar los registros (o sea, si mi código te sirve) y quieres hacer eso de ponerlos de 2 en 2, o de 5 en 5...
Código PHP:
//sólo cambias la línea que dice:

$num++;

//y en su lugar pones:

$num=$num+2;     //2 es la cantidad que quieres que incremente (lo cambias por otro número si quieres) 
A ver si nos cuentas si eso era lo que querías.

Saludos
  #14 (permalink)  
Antiguo 08/10/2003, 22:34
 
Fecha de Ingreso: octubre-2003
Mensajes: 55
Antigüedad: 14 años, 2 meses
Puntos: 0
Hola a todos, y muchas gracias...

También quiero disculparme por la expresión que tuve con ustedes "los maestros" del foro.... Lo que ocurrió, es que no veía ninguna respuesta acertada de lo que necesitaba... Y me desesperé... Hice el script, pero me salió mal y me faltaba algo.... y lo conseguí gracias a ustedes.... Especialmente le doy las gracias a jpinedo, ya que en su ejemplo pude ver lo que me hacía falta... era la sentencia de comparación WHERE id=".$row[0]; entre otras cosas.

Realmente no sabía con que valor comparar para aplicar el UPDATE, aunque yo estuve cerca de la respuesta, ustedes realmente se llevaron los créditos..


Mi explicación del porqué de todo esto.. Es que tengo una base de datos para monitorear las descargas de mi web, asi contabilizo cada descarga, y sé cuantas veces han descargado cierto archivo, cual es el archivo, IP del navegante.. etc.. Y el campo "numero" de la tabla "descargas", me sirve para saber cuantas descargas son las que tengo disponibles en línea.
Con esto sé que si pido el informe de la número 5 (en orden correlativo del campo "numero"), obtengo el Id, nombre, cantidad de descargas, enlace, etc, etc... para saber.. También me permite hacer el listado completo y ordenado mediante ese campo, asignándolo como un identificador que yo conozco.



Bueno gracias a todos, y reitero mis disculpas... Realmente todos ustedes un un buen equipo.


Salu2.!
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:52.