Foros del Web » Programando para Internet » PHP »

Que los campos no me den 00

Estas en el tema de Que los campos no me den 00 en el foro de PHP en Foros del Web. Hola, necesito usar un if, pero no sé cómo... Se trata de una consulta del modo Código: select * from mitabla where campo1=X El campo1 ...
  #1 (permalink)  
Antiguo 20/11/2011, 00:34
 
Fecha de Ingreso: junio-2005
Mensajes: 56
Antigüedad: 18 años, 10 meses
Puntos: 0
Que los campos no me den 00

Hola,
necesito usar un if, pero no sé cómo...
Se trata de una consulta del modo
Código:
select * from mitabla where campo1=X
El campo1 nunca está vacío, pero el resto puede estarlo.

Entonces, necesito que la consulta me de una lista de registros de modo
Código:
<li> <?= $row['campo2'] ?></li>
<li>  <?= $row['campo3'] ?></li>
<li>  <?= $row['campo4'] ?></li>
Etc. de campos.

El problema es que yo no sé cuándo empiezan los campos con registros vacíos, ya que a veces los datos terminarán en el campo7 y otras en el campo16 (esta parte no la modifico yo)
Entonces
¿Cómo podría hacer que, dentro de un rango de registros, me contase los que hay actualmente y devolviese el
Código:
<li><?= $row['campoY'] ?></li>
sólo hasta el último campo con datos?

Es que queda muy feo estéticamente que al final de la lista, donde los campos estén vacíos me siga escribiendo la lista del circulito y 00 como dato en la página.
Gracias
  #2 (permalink)  
Antiguo 20/11/2011, 02:41
 
Fecha de Ingreso: septiembre-2008
Ubicación: Manises,Valencia
Mensajes: 114
Antigüedad: 15 años, 6 meses
Puntos: 13
Respuesta: Que los campos no me den 00

Hola, puedes probar así:

Para extraer los resultados del query usa mysql_fetch_array y en vez de escribir el código para imprimir o mostrar el campo1, campo2,...,campo16 creas un bucle con 16 repeticiones que te vaya pasando por los resultados de la busqueda.

En la linea que escribe el registro le pones un condicional (if) lógico de esta manera:

if ($campo<>"00") echo "<li> <$row['campo'] ></li>";

De esta manera sólo imprimirá la linea en caso de que el registro sea diferente de "00".
  #3 (permalink)  
Antiguo 25/11/2011, 01:02
 
Fecha de Ingreso: junio-2005
Mensajes: 56
Antigüedad: 18 años, 10 meses
Puntos: 0
Respuesta: Que los campos no me den 00

Hola fontanares
Gracias por tu ayuda. He cambiado las propiedades y ahora son campos NULL.
Intento hacer lo que me dices y lo he probado de varias formas, pero en alguna parte me equivoco. Seguro que es un error (o varios) de bulto, pero soy incapaz de detectarlos
Cita:
<?php
include("conectarse.php");
$link=Conectarse();
$campo= array($row['producto1'], $row['precioproducto1'], $row['producto2'], $row['precioproducto2'], $row['producto3'], $row['precioproducto3'], $row['producto4'], $row['precioproducto4'], $row['producto5'], $row['precioproducto5'], $row['producto6'], $row['precioproducto6']);
$sql=mysql_query("select * from tabla where id='4'",$link);
while ($row=mysql_fetch_array($sql))
{
if($campo<>"NULL")
echo "<tr><td><li> <$row['campo'] >:<$row['campo'] ></li></td></tr>";
}

?>

Un saludo

Última edición por Aynaela; 25/11/2011 a las 01:43
  #4 (permalink)  
Antiguo 25/11/2011, 01:45
Avatar de jorgelpadronb  
Fecha de Ingreso: agosto-2011
Ubicación: Cuba
Mensajes: 281
Antigüedad: 12 años, 8 meses
Puntos: 37
Respuesta: Que los campos no me den 00

Saludos. Prueba esto

Código PHP:
Ver original
  1. $sql=mysql_query("select * from tabla where id='4'",$link);
  2. while ($row=mysql_fetch_array($sql)) {
  3.    foreach($campo as $ky=>$elm){
  4.        if($row[$elm]<>NULL)
  5.           echo "<td><li>$elm: <$row[$elm]></li><td>";
  6.        }
  7.    }
  8. }

Pruba a ver que pasa
  #5 (permalink)  
Antiguo 25/11/2011, 01:46
Avatar de jorgelpadronb  
Fecha de Ingreso: agosto-2011
Ubicación: Cuba
Mensajes: 281
Antigüedad: 12 años, 8 meses
Puntos: 37
Respuesta: Que los campos no me den 00

Aquí te dejo uno mejorado, usa este que está mas optimizado. Con este ya no necesitas la variable $campos

Código PHP:
Ver original
  1. $sql=mysql_query("select * from tabla where id='4'",$link);
  2. while ($row=mysql_fetch_array($sql)) {
  3.    foreach($row as $ky=>$elm){
  4.        if($elm!=NULL)
  5.           echo "<td><li>$ky: <$elm></li><td>";
  6.        }
  7.    }
  8. }

Disculpa en el ejemplo anterior puse <> como operador diferente de, en realidad se usa !=. Son resagos del VB, que se me sale de vez en cuando. De cualquier manera, utiliza esta nueva versión.

Última edición por jorgelpadronb; 25/11/2011 a las 02:00
  #6 (permalink)  
Antiguo 25/11/2011, 02:28
 
Fecha de Ingreso: junio-2005
Mensajes: 56
Antigüedad: 18 años, 10 meses
Puntos: 0
Respuesta: Que los campos no me den 00

Muchas gracias, jorgelpadronb
Me da resultados, pero me incluye nombre de campos (no debería), no escribe cuando hay un texto (solo si hay cifras) y en lugar de incluir dos campos seguidos, me los duplica.
Seguramente no expliqué bien el resultado que quería ni el tipo de datos porque para los campos que incluyen cifras tu código sí que funciona (le he quitado un }).
Pero lo que yo necesito es:
<tr><td><li> Cuadernos: Xeuros </li></td></tr>
<tr><td><li> Bolígrafos: Yeuros </li></td></tr>

Donde cuadernos sería el campo5 y Xeuros el campo6, los campos7 y 8 estarían vacíos, Bolígrafos sería el campo9 e Yeuros el campo10
Me conviene con array porque tampoco quiero que muestre los campos 1 y 2, que no están vacíos, pero no debe listarlos.

En fin, como verás, no me entero...
Muchas gracias por tu ayuda.
Un saludo.
  #7 (permalink)  
Antiguo 25/11/2011, 02:41
Avatar de jorgelpadronb  
Fecha de Ingreso: agosto-2011
Ubicación: Cuba
Mensajes: 281
Antigüedad: 12 años, 8 meses
Puntos: 37
Respuesta: Que los campos no me den 00

Primero prueba así:

Código PHP:
Ver original
  1. $sql=mysql_query("select * from tabla where id='4'",$link);
  2. while ($row=mysql_fetch_array($sql)) {
  3.    foreach($row as $ky=>$elm){
  4.        if($elm!=NULL && trim($elm)!=''){
  5.           echo "<tr><td><li>".$elm."</li></td></tr>";
  6.        }
  7.    }
  8. }

Si te duplica resultados prueba así:

Código PHP:
Ver original
  1. $sql=mysql_query("select * from tabla where id='4'",$link);
  2. while ($row=mysql_fetch_array($sql)) {
  3.    foreach($row as $ky=>$elm){
  4.       if(is_string($ky)){
  5.         if($elm!=NULL && trim($elm)!=''){
  6.           echo "<tr><td><li>".$elm."</li></td></tr>";
  7.        }
  8.      }
  9.    }
  10. }

Última edición por jorgelpadronb; 25/11/2011 a las 02:49

Etiquetas: campos, registro, tabla
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 23:20.