Foros del Web » Programando para Internet » PHP »

Recorrer campos de un registro

Estas en el tema de Recorrer campos de un registro en el foro de PHP en Foros del Web. tengo creados 30 campos consecutivos en un mismo registro que tiene como indice un $id que se autoincrementa en estos 30 campos no se ingresa ...
  #1 (permalink)  
Antiguo 03/02/2003, 22:10
Avatar de Salome  
Fecha de Ingreso: noviembre-2002
Ubicación: Colombia
Mensajes: 1.032
Antigüedad: 15 años, 1 mes
Puntos: 1
Pregunta Recorrer campos de un registro

tengo creados 30 campos consecutivos en un mismo registro que tiene como indice un $id que se autoincrementa

en estos 30 campos no se ingresa informacion inmediatamente con lo que puede suceder por ejemplo que 15 tengan valor y los otros 15 esten en cero

entonces por ejemplo si me paro en el $id1 como hago para recorrer estos campos (los 30) y verificar cuales estan vacios y donde puedo ingresar??
  #2 (permalink)  
Antiguo 03/02/2003, 22:27
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Si entendí bien .. una solución seria usar un bucle "for" para recorrer esos 30 campos .. acedediendo a el via fethc_array y usando indice numérico .. que corresponde al orden correlativo que tienen en tu tabla esos campos. Se recorren los 30 campos de tu tabla por cada registro (he de ahí el bucle while .. ) Si solo obtienes un registro en tu $sql consulta (algun WHERE condicion y esta arroja un solo registro ) .. da igual pero podrias eliminar el bucle while y quedarte solo con $registro=mysql_fecth_array($consulta);.

Código PHP:
<?
// conecta a tu BD .. etc ..etc ..

echo 'Campos vacios:<br>';

$consulta=mysql_query($sql);
while (
$registro=mysql_fetch_array($consulta)){
     for (
$campo=0$campo <= 30$campo++){
          if (
$registro[$campo] != ""){
              echo 
'Campo nº: '.$campo.'<br>';
          } 
     }
}

?>
De todas formas .. podrias explicar mejor (Con mas detalles y ejemplos) que es lo que pretendes hacer .. tal vez la solucíon sea una consulta SQL mas compleja de loq estas haciendo . o hay alguna forma mejor de implementar lo q necesitas ..

En que consisten esos "30 campos" de tu tabla?

Un saludo,
  #3 (permalink)  
Antiguo 03/02/2003, 23:41
Avatar de Salome  
Fecha de Ingreso: noviembre-2002
Ubicación: Colombia
Mensajes: 1.032
Antigüedad: 15 años, 1 mes
Puntos: 1
Bien la idea de estos campos es:

por ejemplo tengo esta tabla

$id $nusuario $campo1 $campo2 ...... $campo30

entonces si $id = 1 por decir algo me paro en ese registro... el $id1 tiene entonces 30 campos, la primera vez que ingreso ingresolo solo 5. o 10 o 15 pero luego debo ingresar mas hasta quizas completar los 30 campos de ese id...

Ahora mi pregunta es como pasar de $campo1 a $campo2 y asi sucevimante como si estuviera recorriendo un vector

--------------------------------------------------------------------------------
$id / $nusuario / $campo1 / $campo2 / $campo...........30
--------------------------------------------------------------------------------
1 /salome / medias / zapatos /0..................0

los otros campos que no ingrese estarian en ceros entonces al querer ingresar de nuevo valores.. como haria para recorrer ese id1 y ubicarme en el campo que debe ser... como manejaria ahi el nombre de las variables?... y espero ahora si haberme echo entender mejor...
  #4 (permalink)  
Antiguo 04/02/2003, 04:51
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
A ver .. si entendí:

Esos campos de tu tabla tienen nombre .. el que le corresponda a cada uno.

Cuando creas el registro sopongo que haras un:

INSERT INTO tabla VALUES ("",$usuario,$campo1,$campo2,$campo3 ... etc)

Cuando vas hacer el UPDATE de esos campos de ese registro .. ¿Presentas en un formulario todos los campos (esos 30) para que el usuario rellene los datos que no rellenó en primera instancia? ...

Si así .. envia todos los datos desde ese formulario a tu script que haga el UPDATE .. Un UPDATE a todos los campos bajo la condicion WHERE de tu $id o campo clave q uses. Los valores que sean inguales .. se actualizaran con lo mismo y los nuevos entraran en sus posiciones

Segun esto .. Por lo mismo que conoces los nombres de esos campos .. Cuando necesites ACTUALIZAR los valores de los campos de un registro en concreto deberias hacer el UPDATE

UPDATE tabla SET campo1='$campo1,campo2='$campo2 etc ... WHERE id='$id'

Si tuvieses varios formularios . en los que actualizas solo "X" campos de esa tabla .. tan solo tienes que hacer un UPDATE con los campos (nombres) que uses en ese formulario o proceso .. Pero eso sí . siempre conociendo su nombre.

Otro detalle .. no se como tienes estructurado tu "modelo de datos" de esa Base de datos ... Pero, por lo poco que se ve te haría falta "normalizar" mas tu módelo de datos .. con lo que tendrias que tener varias tablas asociadas entre si y no tener una úncia tabla gigantesca con 30 campos .. De esa forma estas usando información "superflua" .. datos repetidos constantemente en todos los registros .. Con eso aumentas exponencialmente el tamaño de tu Base de dtos y la haces muyy pesada para manejarla .. Te recomiendo que revises lo que te comento y si tienes dudas de como "modelar" tu BD normalizandola usa el foro de Base de datos .. comenta que datos tienes y veras como se organiza mejor ...

Un saludo,
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:47.