Foros del Web » Programando para Internet » PHP »

Ayuda urgente (de tiempo).

Estas en el tema de Ayuda urgente (de tiempo). en el foro de PHP en Foros del Web. Hola, me gustaria preguntar si alguno me puede ayudar, la verdad es que me queda poco tiempo (menos de un dia) y ya no paro ...
  #1 (permalink)  
Antiguo 14/05/2009, 11:02
 
Fecha de Ingreso: febrero-2009
Mensajes: 52
Antigüedad: 15 años, 2 meses
Puntos: 0
Ayuda urgente (de tiempo).

Hola, me gustaria preguntar si alguno me puede ayudar, la verdad es que me queda poco tiempo (menos de un dia) y ya no paro de darle vueltas y no se como se hace. Os explico el problema.

Tengo 66 campos en una BD, para cada registro. Y tengo que mostrar esos campos si NO SON NULL. Hasta ahí bien. La cosa es que quiero organizarlo un poco y me gustaria meterlo en tabla o algo por el estilo. Es decir que si el dato es diferente de NULL, lo muestra en un td por ejemplo. Mi verdadero problema surje que no puedo crear una tabla enorme. Tengo solo una tabla máximo de 4xx por 3xx (nose exactamente) y tengo que meter esos campos dentro. (No son muy grandes los valores).

¿Como lo aria?. Si es diferente de null lo inserto en un td, y cuando el td lleve 5 por ejemplo, cree otro td, y otros 5 en ese td y al tercer td, aga un tr?. Me explico?. Es algo lioso, el problema surge que yo nose que datos van a ser null o no, eso depende del cliente y tengo que mostrar solo los que no sean null.
  #2 (permalink)  
Antiguo 14/05/2009, 11:05
Avatar de By_George  
Fecha de Ingreso: abril-2009
Ubicación: localhost
Mensajes: 629
Antigüedad: 15 años
Puntos: 19
Respuesta: Ayuda urgente (de tiempo).

pero si sabes lo basico de php??? por que si no sabes ni hacer una consulta esta muy dificil, pero bueno lo primero seria que postearas el codigo que tienes en tu pagina para ver como haces la consulta y si kieres k te muestre un registro a la vex.
__________________
La estadística es una ciencia que demuestra que si mi vecino tiene dos coches y yo ninguno, los dos tenemos uno.
  #3 (permalink)  
Antiguo 14/05/2009, 12:50
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Respuesta: Ayuda urgente (de tiempo).

Revisa en las FAQs y en los Aportes del foro, te explican como crear una tabla de X columnas por x filas, solo sería que lo adaptaras a tu condicional de que si no son null.

Saludos.
  #4 (permalink)  
Antiguo 14/05/2009, 13:14
 
Fecha de Ingreso: febrero-2009
Mensajes: 52
Antigüedad: 15 años, 2 meses
Puntos: 0
Respuesta: Ayuda urgente (de tiempo).

Ok lo mirare pero seguramente no lo encuentre, es algo complicado lo que busco. Si un campo es NO NULL lo muestra, y si es NULL no lo muestra, cuando llega a X campos mostrados crea un nuevo td y/o tr, asi asta formar la tabla.
  #5 (permalink)  
Antiguo 14/05/2009, 13:56
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Respuesta: Ayuda urgente (de tiempo).

No es nada complicado, mira:

¿Cómo distribuir los resultados de un query en columnas?.
[APORTE] Representación de datos con tablas
  #6 (permalink)  
Antiguo 15/05/2009, 02:15
 
Fecha de Ingreso: febrero-2009
Mensajes: 52
Antigüedad: 15 años, 2 meses
Puntos: 0
Respuesta: Ayuda urgente (de tiempo).

Creo que voy piyando la idea, pero sigue sin salirme (o sin entender) como meter los 66 campos y solo mostrar los que no esten vacios, sin saber cuantas filas o columnas tendra la tabla.

Estoy intentando sacar la logica, no es el codigo correcto obviamente:

Cita:
<?PHP

$tdx = 0; // conteo de celdas
$max = 10; // cada cuantos resultados debo abrir una celda

$a = mysql_query("SELECT * FROM inmuebeles WHERE campo1 NOT LIKE ''");
$num_resultados = mysql_num_rows($a);

$max_tr = 10; // a los 10 tr, saldra una nueva celda
$colspan = 0; // zero

while(mysql_fetch_Array.......){
if($colspan <= $max_tr){
echo '<td colspan="'.$colspan.'">dato1</td>';
echo '</tr><tr>';
echo '<td>dato2</td>';
echo '</tr><tr>';
echo '<td>dato3</td>';
echo '</tr><tr>';
echo '<td>dato4</td>';
echo '</tr><tr>';
echo '<td>dato5</td>';
echo '</tr><tr>';
echo '<td>dato6</td>';
echo '</tr><tr>';
echo '<td>dato7</td>';
$colspan++;
}else{
$colspan = 0;
echo '<td>dato8</td>';
echo '<td>dato9</td>';
echo "..";
$colspan++;
}
}

?>
Sigo sin saber como acer que la consulta SQL me saque todos los campos que esten no null. Y tampoco tengo idea de como sacarlos y organizarlo en tablas dependiendo de cuantos resultados saque ya que nose ni cuantos campos saca ni cuales, con lo cual nose como llamarlos.

Última edición por Necrobone; 15/05/2009 a las 03:41
  #7 (permalink)  
Antiguo 16/05/2009, 05:40
 
Fecha de Ingreso: febrero-2009
Mensajes: 52
Antigüedad: 15 años, 2 meses
Puntos: 0
Respuesta: Ayuda urgente (de tiempo).

Ya consegui hacerlo, con el foreach!.

Código PHP:
foreach($row as $campo => $valor){
if (
$valor != "No" && $valor !=''){
echo 
''.$campo.' : '.$valor.'<br/>';
}

Solo tengo un problema, me salen todos los datos como yo quiero si, pero se repiten tanto el nombre del campo, como la posicion del array.

0: N.
Terraza: No

1 : Incluida
Instalacion : Incluida

me entendeis?, como ago para que solo salga el nombre y no la posicion del array? :S-
  #8 (permalink)  
Antiguo 16/05/2009, 08:55
Avatar de By_George  
Fecha de Ingreso: abril-2009
Ubicación: localhost
Mensajes: 629
Antigüedad: 15 años
Puntos: 19
Respuesta: Ayuda urgente (de tiempo).

nada mas imprime valor y quita lo de campo:

echo $valor.'<br/>';
__________________
La estadística es una ciencia que demuestra que si mi vecino tiene dos coches y yo ninguno, los dos tenemos uno.
  #9 (permalink)  
Antiguo 16/05/2009, 11:14
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Respuesta: Ayuda urgente (de tiempo).

Y usa mejor mysql_fetch_assoc() o mysql_fetch_row() ya que si usas mysql_fetch_array() te regresa un array con el indice tanto como el nombre del campo.

Luego usa alguno de los dos aportes para armar tu tabla, veras que es sencillo.

Saludos.
  #10 (permalink)  
Antiguo 17/05/2009, 07:51
 
Fecha de Ingreso: febrero-2009
Mensajes: 52
Antigüedad: 15 años, 2 meses
Puntos: 0
Respuesta: Ayuda urgente (de tiempo).

Ya me salio solo el nombre del campo con assoc ;) muchas gracias. Ahora estoy intentando organizarlo en tablas, que cada 3 columnas cree una fila. Estoy intentando hacerlo asi:

Código PHP:
$a 0;
$b 3;
foreach(
$row as $campo => $valor){
if(
$a <= $b){
if (
$valor != "No" && $valor !=''){
echo 
'<td>'.$campo.' : '.$valor.'</td>';
$a=$a+1;
}
}

Pero creo que con el if no me va a salir. Tengo que decirle que cuando la variable a (columnas) sea 3 aga una nueva fila y resetee y siga sumando sacando con el foreach, pero creo que con el else no funciona ya que no volveria al bucle de if, no?. Como podria hacerlo?. (Espero que me podais responder es para mañana T_T).
  #11 (permalink)  
Antiguo 17/05/2009, 11:56
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Respuesta: Ayuda urgente (de tiempo).

Lee los links que te pase, te explican como hacerlo ya teniendo tu estructura de un array, tienes que comparar, usando if() y el operador de modulo (%). Por ejemplo if (($i % 3) == 0) { nueva_fila(); }

Saludos.
  #12 (permalink)  
Antiguo 17/05/2009, 16:56
 
Fecha de Ingreso: febrero-2009
Mensajes: 52
Antigüedad: 15 años, 2 meses
Puntos: 0
Respuesta: Ayuda urgente (de tiempo).

Perfecto!, Ya funciona! genial!. Una ultima duda, los datos que van en la tabla usan otro query. puedo meter el while($row = mysql_fetch_assoc($_pagi_result)) dentro de otro while($row = mysql_fetch_assoc($_pagi_result)). (Obviamente cambiando las variables y cambiando el query a otro).

Es que lo he intentado pero no me funciona, no me sale ningun dato. La cosa es que no quiero que muestre todos los datos sino algunos campos de la tabla, pero al estar dentro de un while deberia hacer otro para hacer otro query no?.
  #13 (permalink)  
Antiguo 17/05/2009, 20:16
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Respuesta: Ayuda urgente (de tiempo).

Pues perfectamente puedes hacer dos whiles anidados, todo depende de como sea tu logica y como lo hayas programado.

Saludos.
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 11:44.