Foros del Web » Programando para Internet » PHP »

Como coger solo paginas publicadas

Estas en el tema de Como coger solo paginas publicadas en el foro de PHP en Foros del Web. Hola, lo primero decir que no soy programador y no tengo mucha idea del tema. Viendo el foro, leyendo y probando he conseguido crear un ...
  #1 (permalink)  
Antiguo 26/07/2011, 00:03
 
Fecha de Ingreso: julio-2011
Mensajes: 17
Antigüedad: 13 años, 3 meses
Puntos: 0
Como coger solo paginas publicadas

Hola, lo primero decir que no soy programador y no tengo mucha idea del tema. Viendo el foro, leyendo y probando he conseguido crear un php para generar automáticamente un xml que me sirve de sitemap para google news. (trabajo con Joomla)

Funciona bien al 95 por ciento, solo me falta conseguir que el sitemap solo me coja las páginas que estan publicadas y no las programadas. No sé si me explico. A veces programo noticias para dentro de dos días, pero el codigo php me las coge en cuanto las grabo aunque tenga fecha posterior.

¿Hay alguna forma de que el php solo pille los articulos que están publicados y no los que están programados?

Muchas gracias de antemano

Última edición por ferg0nar; 26/07/2011 a las 00:34
  #2 (permalink)  
Antiguo 26/07/2011, 00:39
Avatar de andresdzphp
Colaborador
 
Fecha de Ingreso: julio-2011
Ubicación: $this->Colombia;
Mensajes: 2.749
Antigüedad: 13 años, 4 meses
Puntos: 793
Respuesta: Como coger solo paginas publicadas

Tal vez si dejas el código te puedan ayudar, porque no somos adivinos
__________________
Si sabemos como leer e interpretar el manual será mucho más fácil aprender PHP. En lugar de confiar en ejemplos o copiar y pegar - PHP
  #3 (permalink)  
Antiguo 26/07/2011, 00:42
 
Fecha de Ingreso: julio-2011
Mensajes: 17
Antigüedad: 13 años, 3 meses
Puntos: 0
Respuesta: Como coger solo paginas publicadas

Tienes toda la razón, sorry...

es un codigo antiguo que he ido ajustando a los requerimientos actuales de google news.

Código:
header("Content-type: text/xml; charset=UTF-8");
header("Content-encoding: UTF-8");
 
// No direct access
defined( '_JEXEC' ) or die( 'Restricted access' );

$lg = &JFactory::getLanguage();
$language = $lg->getLocale();
$language = str_replace(Array('.UTF-8','@euro'),'',$language[4]);

$config =& JFactory::getConfig();
$use_suffix = $config->getValue('config.sef_suffix');
$offset = $config->getValue('config.offset');
list($hours, $minutes) = explode('.', $offset);
$minutes = 60 * "0.$minutes";
if ($hours >= 0) {
  $hours = "+$hours";
}
if (strlen($hours) == 2) {
  $hours = substr($hours, 0, 1) . '0' . substr($hours, 1, 1);
}
if (strlen($minutes) == 1) {
  $minutes = "0$minutes";
}
$timezone = "$hours:$minutes";

$threedaysago = date('Y-m-d h:i:s',(time()-172800));
 
$db =& JFactory::getDBO();

$get_all_cfg = 'SELECT * FROM #__gnsg_cfg';

$db->setQuery($get_all_cfg);
$rows = $db->loadAssocList();

$cfg = Array();
if (is_array($rows))
	foreach ($rows as $row)
		$cfg[$row['key']] = $row['value'];

if ($cfg['language'])
	$language = $cfg['language'];


switch ($cfg['sef-component']) {
	
	case 'sh404' :
			$query = '
				SELECT 
					oldurl,newurl 
				FROM 
					`jos_redirection` 
				WHERE 
					`newurl` 
				REGEXP 
					"option=com_content&Itemid=[0-9]*&catid=[0-9]*&id=[0-9]*&lang=[a-zA-Z]*&view=article"
				LIMIT 
					5000
			';
			$gg_q = @mysql_query($query);
			$db->setQuery( $query );
			$rows = $db->loadAssocList();
			for ( $a=0; $a<sizeof($rows); $a++ ) {
				$row = $rows[$a];
				$rm = preg_match('/option=com_content&Itemid=[0-9]*&catid=[0-9]*&id=([0-9]*)&lang=[a-zA-Z]*&view=article/',$row['newurl'],$matches);
				
				$lookfor_content = '
					SELECT
						a.created,
						a.title AS title
						a.metakey AS metakey
						a.publish_up AS publish_up
					FROM
						#__content AS a
					WHERE
						a.id = '.$matches[1].' AND
						a.created >="'.$threedaysago.'"
					ORDER BY
						a.created DESC
					LIMIT 1
				';
				
				$db->setQuery( $lookfor_content );
				$thise = $db->loadAssocList();
				if ($thise[0]['created']) {
					$rows[$a] = Array(
						'id' 		=> $matches[1],
						'cont' 		=> '',
						'created' 	=> $thise[0]['created'],
						'cat'		=> '',
						'catid'		=> '',
						'title'		=> $thise[0]['title'],
						'new'		=> $row['oldurl']
					);
				} else {
					$rows[$a]=Array();
				}
			}
		break;
	case 'no-sef' :
	case 'no-modrewrite' :
	case 'core' : 
	default		:
			$query = '
				SELECT 
					a.id,
					a.alias AS cont,
					a.created,
					b.alias AS cat,
					a.catid AS catid,
					c.alias AS `sec`,
					a.sectionid AS secid,
					a.title AS title,			
					a.metakey AS metakey,
					a.publish_up AS publish_up
				FROM 
					#__content AS a, 
					#__categories AS b,
					#__sections as c
				WHERE 
					c.id = a.sectionid AND
					b.id = a.catid  AND
					a.created >="'.$threedaysago.'"
				ORDER BY a.created DESC 
				LIMIT 50000
			';
			$db->setQuery( $query );
			$rows = $db->loadAssocList();
		break;
}

echo '<?xml version="1.0" encoding="UTF-8"?>'.chr(10);
echo '<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"'.chr(10);
echo '        xmlns:news="http://www.google.com/schemas/sitemap-news/0.9">'.chr(10);

foreach ($rows as $row) {
	
	if (!$row['id'])
		continue;
	
	if ($cfg['keywords']!='')
		$keyz = htmlspecialchars($cfg['keywords']);
	else
		$keyz = htmlspecialchars($row['metakey']);
	
	switch ($cfg['sef-component']) {
		
		case 'sh404' :
				$url = JURI::root().$row['new'];
			break;
		case 'no-sef':
				$url = JURI::root().'index.php?option=com_content&amp;view=article&amp;id='.$row['id'].':'.$row['cont'].'&amp;catid='.$row['catid'].':'.$row['cat'];
			break;
		case 'no-modrewrite' :
				$url = JURI::root().'noticias/'.$row['cat'].'/'.$row['id'].'-'.$row['cont'].'';
			break;
		case 'core' : 
		default		:
				$find_menu = '
					SELECT 
						alias
					FROM
						#__menu
					WHERE
						link LIKE "index.php?option=com_content&view=section&id='.$row['secid'].'"
				';
				$db->setQuery( $find_menu );
				$menus = $db->loadAssocList();
				if ($menus[0]['alias']) {
					$prefix = $menus[0]['alias'].'/'.$row['catid'].'-';
				} else {
					$prefix = '';
				}
				
				$find_menu = '
					SELECT 
						alias
					FROM
						#__menu
					WHERE
						link LIKE "index.php?option=com_content&view=categoru&id='.$row['catid'].'" OR 
						link LIKE "index.php?option=com_content&view=category&layout=blog&id='.$row['catid'].'" 
				';
				$db->setQuery( $find_menu );
				$menus = $db->loadAssocList();
				if ($menus[0]['alias']) {
					$row['cat'] = $menus[0]['alias'];
				}
				
				if ($use_suffix) {
					$url = JURI::root().$prefix.$row['cat'].'/'.$row['id'].'-'.$row['cont'].'.html';
				} else {
						$url = JURI::root().$prefix.$row['cat'].'/'.$row['id'].'-'.$row['cont'].'/';
				}
			break;
	}
	
	echo '
	<url>
		<loc>'.$url.'</loc>
		<news:news>
			<news:publication>
				<news:name>'.$cfg['pub-name'].'</news:name>
				<news:language>'.es.'</news:language>
			</news:publication>
			<news:publication_date>'.substr($row['created'],0,10).'</news:publication_date>
			<news:title>'.htmlspecialchars($row['title']).'</news:title>
			<news:keywords>'.$keyz.'</news:keywords>
		</news:news>
	</url>';
}

echo '</urlset>'.chr(10);

JRequest::getInt('no_html', 0);

$no_html = intval(JRequest::getInt('no_html', 0));
if ($scriptname != 'index2.php' || $no_html != 1) {
	die();
}
  #4 (permalink)  
Antiguo 26/07/2011, 01:41
 
Fecha de Ingreso: julio-2011
Mensajes: 17
Antigüedad: 13 años, 3 meses
Puntos: 0
Respuesta: Como coger solo paginas publicadas

Sin tener ni idea, creo que la base está en la hora.

Igual que el codigo me coge las entradas con tres días de antigüedad como máximo, debe haber otra forma de que no coja entradas con horas posteriores a la actual, no?

Lo que pasa es que no tengo ni idea de dónde y cómo ponerlo.
  #5 (permalink)  
Antiguo 26/07/2011, 04:26
Avatar de vgonga1986  
Fecha de Ingreso: marzo-2008
Ubicación: País de Pandereta
Mensajes: 1.021
Antigüedad: 16 años, 8 meses
Puntos: 253
Respuesta: Como coger solo paginas publicadas

Buenas, siguiendo la idea que tú has dicho puede que la solución sea esta:
Código PHP:
$threedaysago date('Y-m-d h:i:s',(time()-172800)); //Esto calcula fecha y hora actual y resta 2 días (172800 segundos).
$now date('Y-m-d h:i:s'time()); // Si añades esto, tendrás en $now la fecha y hora actuales. 
Más adelante, suponiendo que las tablas son como yo pienso tendrías que añadir:
Código PHP:
                    WHERE
                        a
.id '.$matches[1].' AND
                        
a.created >="'.$threedaysago.'" AND
                        
a.created <="'.$now.'" 
Y un poco más abajo lo mismo:
Código PHP:
                WHERE 
                    c
.id a.sectionid AND
                    
b.id a.catid  AND
                    
a.created >="'.$threedaysago.'" AND
                    
a.created <="'.$now.'" 
Esto, repito, es sólo si las tablas están pensadas con la idea de que la fecha de creación (created) es la fecha en que aparecerá la noticia, que no sé si es así o no. Prueba eso si quieres y, si no te funciona, miramos otra solución.

Un saludo.
__________________
¿Alguna pregunta, duda, acotación, nota, cuestión, reparo, comentario, demanda, crítica, interpretación, objeción, interrogante, discrepancia, observación, réplica, disquisición, apostilla o exégesis?
  #6 (permalink)  
Antiguo 26/07/2011, 04:34
 
Fecha de Ingreso: julio-2011
Mensajes: 17
Antigüedad: 13 años, 3 meses
Puntos: 0
Respuesta: Como coger solo paginas publicadas

La leche! Eres un crack!!!!

Creo que funciona! Al menos en el xml ya no me sale una entrada programada para dentro de un rato... voy a confirmar que el robot de google lo acepta bien y te confirmo, pero me da buena espina.

Tio, me haces un rey... en serio. UN MILLÓN DE GRACIAS!!!! Ya te cuento a ver si está todo OK al 100%
  #7 (permalink)  
Antiguo 26/07/2011, 04:39
Avatar de Eleazan  
Fecha de Ingreso: abril-2008
Ubicación: Ibiza
Mensajes: 1.879
Antigüedad: 16 años, 7 meses
Puntos: 326
Respuesta: Como coger solo paginas publicadas

Creo que en vez de trabajar con a.created deberías trabajar con publish_up (que tiene pinta de ser la fecha de publicación!).

Míralo en la tabla SQL de joomla :O
  #8 (permalink)  
Antiguo 26/07/2011, 04:40
Avatar de vgonga1986  
Fecha de Ingreso: marzo-2008
Ubicación: País de Pandereta
Mensajes: 1.021
Antigüedad: 16 años, 8 meses
Puntos: 253
Respuesta: Como coger solo paginas publicadas

Nada, me alegro que te funcione y espero que esté bien al 100%.

Un saludo.

PD: acepto jamones en navidades a cambio de las respuestas
__________________
¿Alguna pregunta, duda, acotación, nota, cuestión, reparo, comentario, demanda, crítica, interpretación, objeción, interrogante, discrepancia, observación, réplica, disquisición, apostilla o exégesis?
  #9 (permalink)  
Antiguo 26/07/2011, 04:44
 
Fecha de Ingreso: julio-2011
Mensajes: 17
Antigüedad: 13 años, 3 meses
Puntos: 0
Respuesta: Como coger solo paginas publicadas

Cita:
Iniciado por Eleazan Ver Mensaje
Creo que en vez de trabajar con a.created deberías trabajar con publish_up (que tiene pinta de ser la fecha de publicación!).

Míralo en la tabla SQL de joomla :O
Es cierto, es que lo cambie a "created" para ver si conseguía ponerlo bien así en vez de con publish_up y se me olvidó cambiarlo. Eso sí creo que sé cambiarlo sin ayuda (bueno, con todo lo que he aprendido aquí en el foro leyendo y releyendo).

Aunque a ver si doy con todos los sitios donde tengo que cambiar "created" por "publish_up". No sé si será en todos.
  #10 (permalink)  
Antiguo 26/07/2011, 04:50
Avatar de vgonga1986  
Fecha de Ingreso: marzo-2008
Ubicación: País de Pandereta
Mensajes: 1.021
Antigüedad: 16 años, 8 meses
Puntos: 253
Respuesta: Como coger solo paginas publicadas

Lo primero que tienes que mirar es si ambos campos son tipo DATE en la base de datos de Joomla, que seguramente lo serán. Y si lo son los dos, como bien apuntó @Eleazan, seguramente uno será para la creación de la página y otro para la publicación de la misma. Con esa idea en mente, haz los cambios que creas.

Un saludo.
__________________
¿Alguna pregunta, duda, acotación, nota, cuestión, reparo, comentario, demanda, crítica, interpretación, objeción, interrogante, discrepancia, observación, réplica, disquisición, apostilla o exégesis?
  #11 (permalink)  
Antiguo 26/07/2011, 04:52
 
Fecha de Ingreso: julio-2011
Mensajes: 17
Antigüedad: 13 años, 3 meses
Puntos: 0
Respuesta: Como coger solo paginas publicadas

Bueno, hay un pequeño problemilla. Resulta que la hora que me da la base de datos mysql no es la misma que la del servidor de la página. No sé si me explico.

El archivo xml que me crea el php no coincide con la hora de la tabla de la base de datos. No sé cuantas horas de desfase habrá.
  #12 (permalink)  
Antiguo 26/07/2011, 05:01
Avatar de Eleazan  
Fecha de Ingreso: abril-2008
Ubicación: Ibiza
Mensajes: 1.879
Antigüedad: 16 años, 7 meses
Puntos: 326
Respuesta: Como coger solo paginas publicadas

probablemente, estará en +0 (en españa estamos en +2!). Tendrás que convertirla o algo
  #13 (permalink)  
Antiguo 26/07/2011, 05:03
Avatar de vgonga1986  
Fecha de Ingreso: marzo-2008
Ubicación: País de Pandereta
Mensajes: 1.021
Antigüedad: 16 años, 8 meses
Puntos: 253
Respuesta: Como coger solo paginas publicadas

Buenas de nuevo.

Tu problema es típico, al hacer el date() en PHP, te obtiene la hora del servidor donde se ejecuta el código PHP. Si la base de datos la tienes en otro server, como parece ser, tienes que sacar la hora de dicho server.

Aquí tienes un ejemplo para sacar la hora del server, puedes intentar en vez de sacar la hora con php y luego pasarla al SQL, sacarla directamente en el SQL:
http://www.forosdelweb.com/f21/como-...server-145512/

Espero te sirva. Un saludo.
__________________
¿Alguna pregunta, duda, acotación, nota, cuestión, reparo, comentario, demanda, crítica, interpretación, objeción, interrogante, discrepancia, observación, réplica, disquisición, apostilla o exégesis?
  #14 (permalink)  
Antiguo 26/07/2011, 05:14
 
Fecha de Ingreso: julio-2011
Mensajes: 17
Antigüedad: 13 años, 3 meses
Puntos: 0
Respuesta: Como coger solo paginas publicadas

Pues ya la he cagao enteramente. Entre el created, el publish_up (en phP), y la programacion de noticias en Joomla, con horas distintas, pues ahora ni idea. La he liado parda.

Ufff, a ver si me despejo y pienso porque para esto del PHP, por lo que veo, hace falta estar concentrado al maximo.
  #15 (permalink)  
Antiguo 26/07/2011, 08:43
Avatar de Eleazan  
Fecha de Ingreso: abril-2008
Ubicación: Ibiza
Mensajes: 1.879
Antigüedad: 16 años, 7 meses
Puntos: 326
Respuesta: Como coger solo paginas publicadas

Cita:
Iniciado por ferg0nar Ver Mensaje
Pues ya la he cagao enteramente. Entre el created, el publish_up (en phP), y la programacion de noticias en Joomla, con horas distintas, pues ahora ni idea. La he liado parda.

Ufff, a ver si me despejo y pienso porque para esto del PHP, por lo que veo, hace falta estar concentrado al maximo.
Pero, ¡si lo tienes genial!

Sólo te faltaba adecuar la hora! :)
  #16 (permalink)  
Antiguo 26/07/2011, 09:58
 
Fecha de Ingreso: julio-2011
Mensajes: 17
Antigüedad: 13 años, 3 meses
Puntos: 0
Respuesta: Como coger solo paginas publicadas

No tengo ni idea qué es lo que tengo que incluir en el codigo php para que me coja la hora buena, ni donde ponerlo. Es que como dije al principio, yo de programación ni idea, aunque haya más o menos perfilado esto (ha sido a base de mucha prueba/error)

Probando veo que el desfase es de unas 10 horas

Y otra cosa, la base de datos está en el mismo servidor que la página :( Así que no entiendo na
  #17 (permalink)  
Antiguo 26/07/2011, 10:07
 
Fecha de Ingreso: julio-2011
Mensajes: 17
Antigüedad: 13 años, 3 meses
Puntos: 0
Respuesta: Como coger solo paginas publicadas

Aún a riesgo de meter la pata hasta el fondo con mi comentario, puede ser el fallo de estas lineas del código?

Código:
echo '<?xml version="1.0" encoding="UTF-8"?>'.chr(10);
echo '<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"'.chr(10);
echo '        xmlns:news="http://www.google.com/schemas/sitemap-news/0.9">'.chr(10)
Es que no sé que significa el chr (10), es lo único que me coincide con las horas de desfase que hay.

EDITO
No he dicho nada... cuando cambio esa cifra se fastidia todo.

Última edición por ferg0nar; 26/07/2011 a las 10:25
  #18 (permalink)  
Antiguo 27/07/2011, 01:36
Avatar de vgonga1986  
Fecha de Ingreso: marzo-2008
Ubicación: País de Pandereta
Mensajes: 1.021
Antigüedad: 16 años, 8 meses
Puntos: 253
Respuesta: Como coger solo paginas publicadas

Prueba esto a ver si tenemos suerte:
Código PHP:
                    WHERE
                        a
.id '.$matches[1].' AND
                        
a.publish_up>="'.$threedaysago.'" AND
                        
a.publish_up <= NOW() 
Código PHP:
                WHERE 
                    c
.id a.sectionid AND
                    
b.id a.catid  AND
                    
a.publish_up >="'.$threedaysago.'" AND
                    
a.publish_up <= NOW() 
Con NOW() obtienes la fecha en formato YYYY-MM-DD HH:MM:SS, si el campo publish_up está en ese mismo formato debería funcionarte en principio.

De todas formas, ahora que lo comentas, si te fijas, el cálculo de $threedaysago no es tres días. Te pone time()-172800. Si calculas:
172800 / 60 segundos = 2880 / 60 minutos = 48 / 24 horas = 2 días

En realidad tus "tres días atrás" son sólo "dos días atrás". Igual ya tiene en cuenta el desfase ese de diez horas.

Bueno, eso son conjeturas, tú prueba eso y si no te funciona seguimos probando. Un saludo.
__________________
¿Alguna pregunta, duda, acotación, nota, cuestión, reparo, comentario, demanda, crítica, interpretación, objeción, interrogante, discrepancia, observación, réplica, disquisición, apostilla o exégesis?
  #19 (permalink)  
Antiguo 27/07/2011, 02:16
 
Fecha de Ingreso: julio-2011
Mensajes: 17
Antigüedad: 13 años, 3 meses
Puntos: 0
Respuesta: Como coger solo paginas publicadas

Pues después de varias pruebas y pruebas y pruebas creo que he atinado. Ha sido tipo loteria, porque he probado tantas veces...

Se me ocurrió restar ese desfase (que creo era de dos horas) al now. Lo he hecho con segundos. Me pasaste esto

Código PHP:
                    $now date('Y-m-d h:i:s'time()); 
Y lo que he hecho es esto

Código PHP:
                    $now date('Y-m-d h:i:s', (time()-7200)); 

Creo que funciona, aunque lo digo en voz baja, porque seguro que me sale otro fallo por donde sea.
  #20 (permalink)  
Antiguo 27/07/2011, 02:17
 
Fecha de Ingreso: julio-2011
Mensajes: 17
Antigüedad: 13 años, 3 meses
Puntos: 0
Respuesta: Como coger solo paginas publicadas

Cita:
Iniciado por ferg0nar Ver Mensaje
Pues después de varias pruebas y pruebas y pruebas creo que he atinado. Ha sido tipo loteria, porque he probado tantas veces...

Se me ocurrió restar ese desfase (que creo era de dos horas) al now. Lo he hecho con segundos. Me pasaste esto

Código PHP:
                    $now date('Y-m-d h:i:s'time()); 
Y lo que he hecho es esto

Código PHP:
                    $now date('Y-m-d h:i:s', (time()-7200)); 

Creo que funciona, aunque lo digo en voz baja, porque seguro que me sale otro fallo por donde sea.
Lo de los tres días está bien, porque son dos días completos, es decir, no me coge articulos creados hace tres dias.

ah!! Y de corazón, un millón de gracias por echarme este cable.
  #21 (permalink)  
Antiguo 27/07/2011, 02:26
Avatar de Eleazan  
Fecha de Ingreso: abril-2008
Ubicación: Ibiza
Mensajes: 1.879
Antigüedad: 16 años, 7 meses
Puntos: 326
Respuesta: Como coger solo paginas publicadas

Me alegro que hayas conseguido solucionarlo :)

Si el desfase son dos horas... ¡cuidado! Quizás cuando acabe el horario de verano (estamos a +2 ahora) se te "rompa" (en invierno estamos sólo a +1!). Tenlo en cuenta cuando se cambie el horario xD (suponiendo que eres de españa)
  #22 (permalink)  
Antiguo 27/07/2011, 02:45
 
Fecha de Ingreso: julio-2011
Mensajes: 17
Antigüedad: 13 años, 3 meses
Puntos: 0
Respuesta: Como coger solo paginas publicadas

Sí, sí, lo he pensado... de todas formas es que ayer lo puse así y no me funcionó, pero hoy sí, así que voy a esperar a ver si me sigue funcionando.

Sí soy de España, de Málaga... aquí siempre es verano, así que no cambiamos la hora
  #23 (permalink)  
Antiguo 27/07/2011, 10:24
 
Fecha de Ingreso: julio-2011
Mensajes: 17
Antigüedad: 13 años, 3 meses
Puntos: 0
Respuesta: Como coger solo paginas publicadas

Pues nada, sigue sin rular. Por las mañanas sí funciona y por las tardes no. Intuyo que debe haber algún tipo de problema o conflicto con la forma de ver la hora, es decir de 0 a 24 horas o de 0 a 12... vamos es hablar por hablar, porque no tengo ni idea. :(
  #24 (permalink)  
Antiguo 27/07/2011, 10:38
 
Fecha de Ingreso: julio-2011
Mensajes: 17
Antigüedad: 13 años, 3 meses
Puntos: 0
Respuesta: Como coger solo paginas publicadas

Creo que ahora sí, lo dejo por si a alguien le sirve.

Efectivamente creo que el problema era el formato de la hora, de 0 a 23 horas, o de 0 a 12.

He cambiado una letrita y parece que funciona

Código PHP:
$now date('Y-m-d h:i:s'time()); 
La h, ¡¡SOLO la H!!! Por esa tonteria he estao liado un rato. Lo dejo así

Código PHP:
$now date('Y-m-d H:i:s'time()); 
  #25 (permalink)  
Antiguo 27/07/2011, 10:46
Avatar de vgonga1986  
Fecha de Ingreso: marzo-2008
Ubicación: País de Pandereta
Mensajes: 1.021
Antigüedad: 16 años, 8 meses
Puntos: 253
Respuesta: Como coger solo paginas publicadas

Efectivamente, tú tienes que pasarle a SQL un formato de fecha que entienda, con h minúscula estabas pasando la hora entre 01 y 12. Ahora con H mayúscula se la estás pasando entre 01 y 24.

De todas formas, esto te lo habrías ahorrado si hubieras pasado el control de horas todo a SQL, es decir, con NOW() como yo te dije, directamente en la sentencia SQL y no pasándole la hora desde PHP.

Ahora mismo, ambas soluciones son válidas, pero si pasado mañana tienes que cambiar la base de datos a un servidor de Turquía y el servidor web (PHP) a un servidor en Portugal, te dejará de funcionar otra vez, porque PHP cogerá la hora de Portugal y SQL comparará con la de Turquía.

Pero bueno, esto ya es un punto perfeccionista que yo tengo. Con eso tiras, un saludo.
__________________
¿Alguna pregunta, duda, acotación, nota, cuestión, reparo, comentario, demanda, crítica, interpretación, objeción, interrogante, discrepancia, observación, réplica, disquisición, apostilla o exégesis?

Etiquetas: coger, sql, 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 21:36.