Foros del Web » Programando para Internet » PHP »

ordenando en columnas datos de distintas tablas

Estas en el tema de ordenando en columnas datos de distintas tablas en el foro de PHP en Foros del Web. Hola, estoy intentando conseguir que funcione el ordenar datos en columnas. La idea es tomar: crid y caract de una tabla donde crid sea igual ...
  #1 (permalink)  
Antiguo 26/11/2008, 01:58
 
Fecha de Ingreso: agosto-2004
Mensajes: 113
Antigüedad: 19 años, 8 meses
Puntos: 0
ordenando en columnas datos de distintas tablas

Hola, estoy intentando conseguir que funcione el ordenar datos en columnas.
La idea es tomar: crid y caract de una tabla donde crid sea igual a caracte.
O sea, tengo una tabla CARACTERISTICAS donde: crid 1 es caract vestidor; crid 2 es caract hidromasaje.
Y en la tabla AVISOS tengo un campo CARACT separado por comas donde están 1,2,3, etc.
El código que uso (y que funciona ordenando fotos) es:
Código PHP:
<?php
$sql 
"SELECT crid, caract FROM caracteristicas where crid= '$caracte'";
$sql mysql_query($sql);                    
// Mostrar los datos
echo '<table align="left">';

// Número de filas
$num mysql_num_rows($sql);

$i 1;
while (
$row mysql_fetch_assoc($sql)) {
    if ((
$i == 1) || ((($i 1) % 3) == 0)) {
        echo 
'<tr>';
    }
    echo 
'<td align="left" valign="top" class="check" >'.$row['caract'].'</td>';

    if (((
$i 3) != 0) && ($i == $num)) {
        while (((
$i 3) != 0)) {
            echo 
'<td></td>';
            
$i++;
        }
    } elseif (((
$i 3) == 0)) {
        echo 
'</tr>';
        }
$i++;
        
}
echo 
'</table>';

?>
No muestra ningún error pero tampoco muestra los datos.
Alguna idea?
gracias
Germán
  #2 (permalink)  
Antiguo 26/11/2008, 02:05
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: ordenando en columnas datos de distintas tablas

hola, tal ves quieras leer esto...

http://www.forosdelweb.com/f18/aport...tablas-618528/
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 26/11/2008, 02:26
 
Fecha de Ingreso: agosto-2004
Mensajes: 113
Antigüedad: 19 años, 8 meses
Puntos: 0
Respuesta: ordenando en columnas datos de distintas tablas

Hola pateketrueke, buen día o buenas tardes (depende)
No termino de comprender tu aporte (soy un tanto limitado) pero a su vez no logro entender por que no funciona lo que estoy utilizando cuando es una búsqueda sencilla.
muchas gracias por tu tiempo
Germán
  #4 (permalink)  
Antiguo 26/11/2008, 02:36
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: ordenando en columnas datos de distintas tablas

vale, entonces... el problema no es de dibujar la tabla... sino de tu query

cambia esto...

Código PHP:
$sql mysql_query($sql) or die(mysql_error()); 
debe salir algo... o un error, si eso ocurre... nos cuentas!
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.

Última edición por pateketrueke; 26/11/2008 a las 02:45
  #5 (permalink)  
Antiguo 26/11/2008, 02:46
 
Fecha de Ingreso: agosto-2004
Mensajes: 113
Antigüedad: 19 años, 8 meses
Puntos: 0
Respuesta: ordenando en columnas datos de distintas tablas

Sigue sin hacer nada y esperaba ansioso un error jaja.
gracias
  #6 (permalink)  
Antiguo 26/11/2008, 02:48
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: ordenando en columnas datos de distintas tablas

prueba esto...

Código PHP:
<?php
$sql 
"SELECT crid, caract FROM caracteristicas where crid= '$caracte'";

echo 
"<pre>$sql</pre>";

$sql mysql_query($sql) or die(mysql_error());  

var_dump(mysql_num_rows($sql));

?>
osea, debes depurar todo... para asegurar que realmente pasa algo....

por cierto, si el campo de tu tabla es INT no debes usar comillas en tu consulta... ya que es un entero, no string...

Código:
... WHERE crid=123 vs ... WHERE crid='123'
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #7 (permalink)  
Antiguo 26/11/2008, 02:55
 
Fecha de Ingreso: agosto-2004
Mensajes: 113
Antigüedad: 19 años, 8 meses
Puntos: 0
Respuesta: ordenando en columnas datos de distintas tablas

Cambie
$sql = mysql_query($sql) or die (mysql_error());
por
$sql = mysql_query($SQL) or die (mysql_error());
y el error es Query was empty
probe sin comillas y con comillas y hace lo mismo
ahora pruebo lo otro

/////////////////////////////edit///////////////////
SELECT crid, caract FROM caracteristicas where crid= ,1,2,3,

Query was empty

Última edición por moquehua; 26/11/2008 a las 03:00 Razón: agregar datos
  #8 (permalink)  
Antiguo 26/11/2008, 10:00
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: ordenando en columnas datos de distintas tablas

Mmmm pero tu variable que tiene el query es $sql no $SQL, recuerda que PHP es case-sensitive, no es lo mismo $sql que $SQL que $sQl.

Saludos.
  #9 (permalink)  
Antiguo 26/11/2008, 10:08
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: ordenando en columnas datos de distintas tablas

prueba así...

Código PHP:
<?php
$sql 
"SELECT crid, caract FROM caracteristicas where crid IN($caracte)";

echo 
"<pre>$sql</pre>";

?>
como sale ???


recuerda, que entonces... es problema de tu sintaxis del SQL, y no de PHP

suerte!
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #10 (permalink)  
Antiguo 26/11/2008, 22:37
 
Fecha de Ingreso: agosto-2004
Mensajes: 113
Antigüedad: 19 años, 8 meses
Puntos: 0
Respuesta: ordenando en columnas datos de distintas tablas

Hola pateketrueke
sale
Código PHP:
SELECT cridcaract FROM caracteristicas where crid IN( ,1,2,3,) 
Y si en lugar de hacer
Código PHP:
<?php
$sql 
"SELECT crid, caract FROM caracteristicas where crid= '$caracte'";
$sql mysql_query($sql);                    
// Mostrar los datos
echo '<table align="left">';

// Número de filas
$num mysql_num_rows($sql);

$i 1;
while (
$row mysql_fetch_assoc($sql)) {
    if ((
$i == 1) || ((($i 1) % 3) == 0)) {
        echo 
'<tr>';
    }
    echo 
'<td align="left" valign="top" class="check" >'.$row['caract'].'</td>';

    if (((
$i 3) != 0) && ($i == $num)) {
        while (((
$i 3) != 0)) {
            echo 
'<td></td>';
            
$i++;
        }
    } elseif (((
$i 3) == 0)) {
        echo 
'</tr>';
        }
$i++;
        
}
echo 
'</table>';

?>
hago
Código PHP:
<?php
$sql 
"SELECT crid, caract FROM caracteristicas";
$sql mysql_query($sql);                    
// Mostrar los datos
echo '<table align="left">';

// Número de filas
$num mysql_num_rows($sql);

$i 1;
while (
$row mysql_fetch_assoc($sql)) {
    if ((
$i == 1) || ((($i 1) % 3) == 0)) {
        echo 
'<tr>';
    }
    echo 
'<td align="left" valign="top" class="check" >'.$row['crid'].'</td>';

    if (((
$i 3) != 0) && ($i == $num)) {
        while (((
$i 3) != 0)) {
            echo 
'<td></td>';
            
$i++;
        }
    } elseif (((
$i 3) == 0)) {
        echo 
'</tr>';
        }
$i++;
        
}
echo 
'</table>';

?>
Con esto va a ordenar todas las características que hay en la tabla sin discriminar a ninguna.
Se puede usar la función strstr() para reemplazar .$row['crid']. por $caracte ?
Gracias
  #11 (permalink)  
Antiguo 26/11/2008, 22:44
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: ordenando en columnas datos de distintas tablas

no entiendo tu ultima pregunta...

con respecto, al problema de tu consulta es obvio...

Código:
... ( ,1,2,3,)
este es un problema de sintaxis (o me estaré equivocando) pues debe ir una lista válida y no rota... osea, si son vacíos que sean NULL o bien, no los incluyas...

Código:
(1,2,3) o así (NULL,2,3,NULL)

espero entiendas esa parte, como creas tu variable $caracte ???


--

puedes explicar que quieres hacer con tus resultados ???

dibujarlos en una tabla, cierto ??

pero, como... eh?
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #12 (permalink)  
Antiguo 26/11/2008, 23:02
 
Fecha de Ingreso: agosto-2004
Mensajes: 113
Antigüedad: 19 años, 8 meses
Puntos: 0
Respuesta: ordenando en columnas datos de distintas tablas

$caracte sale de
Código PHP:
$result mysql_query("select domicilio, ambientes, titulo, tipo, distanciaalmar, supcubierta, suplote, antiguedad, dolares, caract, inmob, descripcion from clasificados where prid = '$prid'");
list(
$domicilio$ambientes$titulo$tipo$distanciaalmar$supcubierta$suplote$antiguedad$dolares$caracte$inmob$descripcion) = mysql_fetch_array($result); 
Con este query obtengo todos los datos de la propiedad $prid.
El campo CARACT de la tabla clasificados es un varchar donde inserto todos los $crid de la tabla CARACTERISTICAS que correspondan a esa propiedad.
Entonces con este query
Código PHP:
<?php
$sql 
"SELECT crid, caract FROM caracteristicas where crid= '$caracte'";
$sql mysql_query($sql);                    
// Mostrar los datos
echo '<table align="left">';

// Número de filas
$num mysql_num_rows($sql);

$i 1;
while (
$row mysql_fetch_assoc($sql)) {
    if ((
$i == 1) || ((($i 1) % 3) == 0)) {
        echo 
'<tr>';
    }
    echo 
'<td align="left" valign="top" class="check" >'.$row['caract'].'</td>';

    if (((
$i 3) != 0) && ($i == $num)) {
        while (((
$i 3) != 0)) {
            echo 
'<td></td>';
            
$i++;
        }
    } elseif (((
$i 3) == 0)) {
        echo 
'</tr>';
        }
$i++;
        
}
echo 
'</table>';

?>
obtengo todos los nombres de las caracteriscas de la tabla caracteristicas y los ordeno en 3 columnas y en las filas que sean necesarias.

La última parte no la entendi
Gracias
  #13 (permalink)  
Antiguo 26/11/2008, 23:07
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: ordenando en columnas datos de distintas tablas

primero lo primero....

acaso entiendes la consulta que estas haciendo ???

Código:
SELECT crid, caract FROM caracteristicas where crid= ',1,2,3,'
esto es lo que resulta, así que.. realmente existe una fila con ese ID ??? ,1,2,3, ???



--
por favor, no cites el texto... no repliques tu código en todas partes
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #14 (permalink)  
Antiguo 26/11/2008, 23:15
 
Fecha de Ingreso: agosto-2004
Mensajes: 113
Antigüedad: 19 años, 8 meses
Puntos: 0
Respuesta: ordenando en columnas datos de distintas tablas

Y no, es una pavada esa consulta.
Pero entonces como hago?
Porque si no funciona como lo queria hacer (es evidente) tiene que haber una forma en que obtenga todas las caracteristicas de la tabla caracteristicas y después descarte las que no estén en el campo CARACT de la propiedad.
  #15 (permalink)  
Antiguo 26/11/2008, 23:21
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: ordenando en columnas datos de distintas tablas

que significa el 1,2,3 ???

es una enumeración?

son ID's ??

o cual es tu idea, de verdad no te entiendo mucho....


--
o ando distraído...
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #16 (permalink)  
Antiguo 26/11/2008, 23:32
 
Fecha de Ingreso: agosto-2004
Mensajes: 113
Antigüedad: 19 años, 8 meses
Puntos: 0
Respuesta: ordenando en columnas datos de distintas tablas

Esta es la tabla CARACTERISTICAS
Código:
TABLE `caracteristicas` (
  `crid` int(4) NOT NULL auto_increment,
  `caract` varchar(60) NOT NULL default '',
1 es hidromasaje
2 es vestidor
3 es cochera
y asi todas las que haya
Dentro de la tabla CLASIFICADOS esta el campo CARACT
Código:
TABLE `clasificados` (
  `caract` varchar(30) default NULL,
en caract inserto los datos separados por coma
y queda ,1,2,3,4,8 y asi con las caracteristicas que tenga la propiedad.
Ahora me explique mejor?
Gracias
  #17 (permalink)  
Antiguo 26/11/2008, 23:41
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: ordenando en columnas datos de distintas tablas

genial, volver al origen y tipo del dato es importante.. OK

ahora, cada característica es un ID distinto... y para compararlo debemos usar IN

bueno, es una larga historia...


como la cadena es invalida, me extraña que no salte un error con or die(mysql_error()) ???

entonces tenemos que reparar la cadena que esta entre comas usando explode...

Código PHP:
$mi ',2,1,3,';

$test explode(','$mi);
$ids = array();

foreach (
$test as $str)
{
  if ( ! empty(
$str)) // vacio ?
  
{
    
// agregamos el ID
    
$ids[] = $str;
  }

filtramos los vacíos (ignoro la función) y pegamos de nuevo...

Código PHP:
$ids join(','$ids);

echo 
$ids// 2,1,3 
este es el dato que te falta para el IN ....

Código:
.. WHERE item_id IN(2,1,3)
así, se considera tu consulta valida... en el formato que lo haces, vaya



espero se entienda, suerte!



--
PDTA: creo que realmente te falta mas que practicar y practicar, leer y leer... reflexionar
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #18 (permalink)  
Antiguo 27/11/2008, 22:56
 
Fecha de Ingreso: agosto-2004
Mensajes: 113
Antigüedad: 19 años, 8 meses
Puntos: 0
Respuesta: ordenando en columnas datos de distintas tablas

Gracias pateketrueke, ahora me pongo a mirar el codigo
saludos
  #19 (permalink)  
Antiguo 03/12/2008, 16:43
 
Fecha de Ingreso: agosto-2004
Mensajes: 113
Antigüedad: 19 años, 8 meses
Puntos: 0
Respuesta: ordenando en columnas datos de distintas tablas

Finalmente funciona,
Código PHP:
$caracteristicas ="";
$resulte mysql_query("select crid, caract from caracteristicas");
while (list(
$crid$caract) = mysql_fetch_array($resulte)) {
    if (
strstr($caracte,",".$crid.",") != false) {
    
$caracteristicas $caracteristicas."<div id='caracteristicas'><ul><li><img src='images/c_1.png' border='0' align='absmiddle' height='6'/> " $caract."</li> </ul></div> ";
    }

y un
Código PHP:
<?php echo $caracteristicas?>
Gracias pateketrueke por el tiempo
Saludos

Última edición por moquehua; 03/12/2008 a las 16:44 Razón: me olvide de agradecer
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 01:01.