Ver Mensaje Individual
  #1 (permalink)  
Antiguo 05/06/2008, 08:47
fran321
 
Fecha de Ingreso: octubre-2007
Mensajes: 57
Antigüedad: 17 años, 5 meses
Puntos: 0
Uso de campos-alias en PHP

Hola. Si alguien pudiera ayudarme, le agradecería que me respondiese a esta pregunta. Veamos el código primero y luego comento la duda:

Código PHP:
<?php
mysql_select_db
($database_ies$ies);
$query_listados "
    (
    SELECT camp_secretaria_referencia as referencia, camp_secretaria_data as data, camp_secretaria_foto as foto, 
    camp_secretaria_titol as titol, camp_secretaria_text as text, camp_secretaria_paginici as paginici, 
    camp_secretaria_seccio as seccio 
    FROM taula_secretaria 
    WHERE camp_secretaria_paginici ='si'
    )
    UNION 
    (
    SELECT camp_centre_referencia, camp_centre_data, camp_centre_foto, camp_centre_titol, 
    camp_centre_text, camp_centre_paginici, camp_centre_seccio 
    FROM taula_centre 
    WHERE camp_centre_paginici ='si'
    )
    UNION 
    .
    .
    etc hasta 25 tablas en total (consulta probada en MySQL y funciona).
    Devuelve los registros de todas las tablas que cumplen una condición
    y las ordena por fecha descendiente. Asigna alias a los campos.
    .
    .
    ORDER BY data DESC 
    LIMIT 0 , 25
    "
;

$listados mysql_query($query_listados$ies) or die(mysql_error());
$row_listados mysql_fetch_assoc($listados);
$totalRows_listados mysql_num_rows($listados);


$llamada "
    SELECT (
    (SELECT COUNT(*) FROM taula_secretaria WHERE camp_secretaria_paginici ='si')
    + 
    (SELECT COUNT(*) FROM taula_centre WHERE camp_centre_paginici ='si')
    + 
    .
    .
    etc hasta 25 tablas en total. Consulta probada y funciona. Obtiene el número total de
    registros que hay en la consulta anterior, es decir, la almacenada en $query_listados 
    .
    .
    ) 
    AS total
    "
;

$result mysql_query($llamada$ies);
$total_anuncis mysql_result($result,0);

?>
                    <?php
if ($total_anuncis 0) { ?>
                    <?php do { ?>

 <?php
$data 
$row_listados['data'];
setlocale(LC_TIME'ca_ES');
echo 
$fecha=strftime('%d %B %Y',strtotime($data));
?>
<?php 
echo $row_listados[$data]; ?>

<?php 
$seccio 
$row_listados['seccio']

switch (
$seccio) {
    case 
'Secretaria':
                
$ruta_fitxa '03_secretaria/secretaria_fitxa.php?camp_secretaria_referencia=';
                
$ruta_foto '03_secretaria/carpeta_arxius/';
               break;
    case 
'Centre':
                
$ruta_fitxa '02_centre/centre_fitxa.php?camp_centre_referencia=';
               
$ruta_foto '02_centre/carpeta_arxius/';
                break;
    case 
'Biblioteca':
        .
        .
        
Etc para asignar rutas en función del departamento de que se trate
        
.
        .
        }

echo 
'<a href="'$ruta_fitxa $row_listados['referencia'] . '"><img src="' $ruta_foto $row_listados['foto'] . '"/></a>'?>
<p>
<a href="<?php echo $ruta_fitxa $row_listados['referencia']; ?><?php echo $row_listados['titol']; ?>

<?php
$textonoti 
nl2br($row_listados['text']); 
$textonoti str_replace("][",'" target="_blank">',$textonoti);
$textonoti str_replace("[",'<a href="',$textonoti);
$textonoti str_replace("]","</a>",$textonoti);    
?>
<?php 
echo substr($textonoti,1,300); ?>

<a href="<?php echo $ruta_fitxa $row_listados['referencia']; ?><img src="0_comuns/llegir_mes_a.jpg" /a><a href="<?php echo $ruta_fitxa $row_listados['referencia[']; ?>

<a href="<?php echo $ruta_fitxa $row_listados['referencia']; ?>Llegir /a>

<?php } while ($row_listados mysql_fetch_assoc($listados)); ?>
Este código está modificado de otro que acudía a una consulta sencilla y por tanto usaba los nombres de los campos reales de la base de datos. Mi consulta, como veis en el código, utiliza los alias: referencia, data, foto, titol, text, paginici y seccio. Luego, más adelante en el código, me refiero a ellos, asignándoles a variables.

Por tanto, yo he modificado las consultas (y funcionan) y he cambiado los nombres de los campos antiguos por los alias y también he insertado un switch porque según la sección de cada registro, se tiene que ir a buscar dos rutas: una para ir a otra página php y otra para encontrar una foto.

Al hacer estas modificaciones es cuando ha dejado de funcionar. He eliminado todo el formato HTML que había para centrarnos únicamente en lo que he modificado. Por eso puede que haya errores de código HTML, pero en el original está bien.

Os agradecería que echarais un vistazo. Gracias de antemano.

Última edición por fran321; 05/06/2008 a las 08:58