Foros del Web » Programando para Internet » PHP »

Consultas en php

Estas en el tema de Consultas en php en el foro de PHP en Foros del Web. Hola a todos, recien acabo de registrarme en este magnifico foro. Estoy empezando en lo que es la programacion, mis conocimientos son minimos y estoy ...
  #1 (permalink)  
Antiguo 25/10/2012, 16:51
 
Fecha de Ingreso: octubre-2012
Ubicación: Rosario
Mensajes: 5
Antigüedad: 11 años, 6 meses
Puntos: 0
Consultas en php

Hola a todos, recien acabo de registrarme en este magnifico foro.

Estoy empezando en lo que es la programacion, mis conocimientos son minimos y estoy probando de empezar con una pagina de frases para facebook.

Tengo la web que estoy armando dividida en :
  • Ultimas frases
  • Tops del dia
  • Tops del momento
  • Tops del mes
  • Top historico

Tengo hechas las consultas de Ultimas frases, top del dia(Me la paso un amigo a esta consulta) y la de Top Historico que creo que esta bien..

Las consultas serian asi :

Ultimas -->
Cita:
Código PHP:
Ver original
  1. <?
  2.  
  3.  
  4.  
  5.     $x=mysql_query("select * from fblike order by id desc limit 0,12");
  6.  
  7.  
  8.  
  9.     $nr=0;
  10.  
  11.  
  12.  
  13.     while ($y=mysql_fetch_assoc($x)) {
  14.  
  15.  
  16.  
  17.         $id=$y['id'];
  18.  
  19.  
  20.  
  21.          $like=htmlspecialchars($y['like']);
  22.  
  23.  
  24.  
  25.         ?>
La del top historico seria asi -->
Cita:
Código PHP:
Ver original
  1. <?
  2.  
  3.  
  4.  
  5.     $x=mysql_query("select * from fblike order by hits desc limit 0,12");
  6.  
  7.  
  8.  
  9.     $nr=0;
  10.  
  11.  
  12.  
  13.     while ($y=mysql_fetch_assoc($x)) {
  14.  
  15.  
  16.  
  17.         $id=$y['id'];
  18.  
  19.  
  20.  
  21.          $like=htmlspecialchars($y['like']);
  22.  
  23.  
  24.  
  25.         ?>
Y la de top del dia seria asi -->
Cita:
Código PHP:
Ver original
  1. <?
  2.  
  3.  
  4.  
  5.     $x=mysql_query("select * from (select * from fblike order by id desc limit 0,14000) AS soisecoxd order by hits desc limit 0,12");
  6.  
  7.  
  8.  
  9.     $nr=0;
  10.  
  11.  
  12.  
  13.     while ($y=mysql_fetch_assoc($x)) {
  14.  
  15.  
  16.  
  17.         $id=$y['id'];
  18.  
  19.  
  20.  
  21.          $like=htmlspecialchars($y['like']);
  22.  
  23.  
  24.  
  25.         ?>
Ahora vamos a la DB para detallar un poco mas el tema :

La db cuenta con las siguientes columnas :

Cita:
Código MySQL:
Ver original
  1. 1   id  int(50)         No  None    AUTO_INCREMENT    Change      Drop   More
  2. 2   like    text    latin1_swedish_ci       No  None          Change      Drop   More
  3. 3   hits
Yo ahora quiero saber como puedo sacar las consultas de frases de Top del Momento, y del mes.. Y si es posible de la semana.

Ojala me puedan orientar un poco ya que no me dio la cabeza hasta ahora ._.

Saludos y mil gracias de antemano.

Atte: Federico
  #2 (permalink)  
Antiguo 27/10/2012, 21:36
Avatar de portalmana  
Fecha de Ingreso: septiembre-2007
Ubicación: Montevideo-Uruguay
Mensajes: 633
Antigüedad: 16 años, 6 meses
Puntos: 80
Respuesta: Consultas en php

Y no tienes algún campo de fecha que indique cuando la frase ingreso a la tabla.

Saludos
__________________
"La imaginación es más importante que el conocimiento. El conocimiento es limitado, mientras que la imaginación no" -- A.Einstein
objetivophp.com,twitter.com/objetivophp
  #3 (permalink)  
Antiguo 27/10/2012, 23:18
 
Fecha de Ingreso: octubre-2012
Ubicación: Rosario
Mensajes: 5
Antigüedad: 11 años, 6 meses
Puntos: 0
Respuesta: Consultas en php

Cita:
Iniciado por portalmana Ver Mensaje
Y no tienes algún campo de fecha que indique cuando la frase ingreso a la tabla.

Saludos
Hola.

Nono, no lo tengo.. No tengo nningun campo de fecha en la db.

Saludos y gracias por responder.
  #4 (permalink)  
Antiguo 28/10/2012, 16:03
Avatar de portalmana  
Fecha de Ingreso: septiembre-2007
Ubicación: Montevideo-Uruguay
Mensajes: 633
Antigüedad: 16 años, 6 meses
Puntos: 80
Respuesta: Consultas en php

Pero y sin campo de fecha que indique cuando se ingreso una palabra a la base de datos es adivinar. Es decir no podes saber cuales pertenecen a la ultima semana o al ultimo mes.

Saludos
__________________
"La imaginación es más importante que el conocimiento. El conocimiento es limitado, mientras que la imaginación no" -- A.Einstein
objetivophp.com,twitter.com/objetivophp
  #5 (permalink)  
Antiguo 28/10/2012, 17:07
 
Fecha de Ingreso: octubre-2012
Ubicación: Rosario
Mensajes: 5
Antigüedad: 11 años, 6 meses
Puntos: 0
Respuesta: Consultas en php

Hola y disculpa mi ignorancia!!!! Podes explicarme como hacerlo de una manera simple? Tendria que modificar el formulario, consultas y algo más? Si necesitas más datos me lo haces saaber.
  #6 (permalink)  
Antiguo 28/10/2012, 17:59
Avatar de portalmana  
Fecha de Ingreso: septiembre-2007
Ubicación: Montevideo-Uruguay
Mensajes: 633
Antigüedad: 16 años, 6 meses
Puntos: 80
Respuesta: Consultas en php

Bueno lo primero seria modificar la Base de datos.
Código SQL:
Ver original
  1. CREATE TABLE `fblike` (
  2.     `id` INT(10) NOT NULL AUTO_INCREMENT,
  3.     `like` TEXT NULL,
  4.     `hits` BIGINT(20) NULL DEFAULT '0',
  5.     `fecha` TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  6.     PRIMARY KEY (`id`)
  7. )
En realidad solo debes crear el ultimo campo fecha, que no necesitaremos incluirlo en la consulta INSERT o UPDATE pues el solo se pondra.

Luego es solo manejar un poco las fechas:
Código PHP:
Ver original
  1. // Ponemos la zona horaria por defecto.
  2. date_default_timezone_set('America/Montevideo');
  3.  
  4. // Creamos un objeto Fecha
  5. //$fecha = new DateTime();
  6. $fecha     = DateTime::createFromFormat('Y-m-d H:i:s', date('Y-m-d H:i:s') );
  7.  
  8. // Fecha menos 30 dias
  9. $fechaAnt   = $fecha->modify('-30 day')->format('Y-m-d H:i:s');
  10. echo '<br>' . $fechaAnt . '<br>';
  11. $mysqlQuery = "SELECT * FROM fblike WHERE "
  12.             . "fecha BETWEEN '" . $fechaAnt . "' and '" . $fecha->date . "' "
  13.             . "ORDER BY hits desc LIMIT 0,10";
  14.  
  15. echo $mysqlQuery;
Te deje para los últimos 30 días, pero para 10, 7 , 1 o lo que sea ves que es facil, solo cambiar el -30 por los días anteriores que se requiere y pronto.

Saludos

Nota: Veras que te deje la consulta armada el resto es simplemente consultar a la base de datos y mostrar.
__________________
"La imaginación es más importante que el conocimiento. El conocimiento es limitado, mientras que la imaginación no" -- A.Einstein
objetivophp.com,twitter.com/objetivophp
  #7 (permalink)  
Antiguo 28/10/2012, 18:29
 
Fecha de Ingreso: octubre-2012
Ubicación: Rosario
Mensajes: 5
Antigüedad: 11 años, 6 meses
Puntos: 0
Respuesta: Consultas en php

Hola.

En el modulo hice lo indicado y en la base de datos tambien y ahora me arroja un error..

Es el siguiente --> Fatal error: Call to undefined method DateTime::createFromFormat() in /home2/proom/public_html/topsdelmes.php on line 109

Saludos.
  #8 (permalink)  
Antiguo 28/10/2012, 18:33
Avatar de portalmana  
Fecha de Ingreso: septiembre-2007
Ubicación: Montevideo-Uruguay
Mensajes: 633
Antigüedad: 16 años, 6 meses
Puntos: 80
Respuesta: Consultas en php

Cita:
Iniciado por federicols Ver Mensaje
Hola.

En el modulo hice lo indicado y en la base de datos tambien y ahora me arroja un error..

Es el siguiente --> Fatal error: Call to undefined method DateTime::createFromFormat() in /home2/proom/public_html/topsdelmes.php on line 109

Saludos.
Tienes (PHP 5 >= 5.3.0)
__________________
"La imaginación es más importante que el conocimiento. El conocimiento es limitado, mientras que la imaginación no" -- A.Einstein
objetivophp.com,twitter.com/objetivophp
  #9 (permalink)  
Antiguo 28/10/2012, 18:40
 
Fecha de Ingreso: octubre-2012
Ubicación: Rosario
Mensajes: 5
Antigüedad: 11 años, 6 meses
Puntos: 0
Respuesta: Consultas en php

Cita:
Iniciado por portalmana Ver Mensaje
Tienes (PHP 5 >= 5.3.0)
La versión del php es Version de PHP 5.2.17.

qué inconvenientes trae esto ?

Saludos.
  #10 (permalink)  
Antiguo 28/10/2012, 18:44
Avatar de portalmana  
Fecha de Ingreso: septiembre-2007
Ubicación: Montevideo-Uruguay
Mensajes: 633
Antigüedad: 16 años, 6 meses
Puntos: 80
Respuesta: Consultas en php

Código PHP:
Ver original
  1. echo '<br>' . date('Y-m-d H:i:s') . '<br>';
  2. echo date('Y-m-d H:i:s',strtotime('-1 month')) . '<br>' ;
  3. echo date('Y-m-d H:i:s',strtotime('-1 week')) . '<br>' ;
  4. echo date('Y-m-d H:i:s',strtotime('-1 day')) . '<br>' ;
Aqui tienes otras formas de tener fechas, cámbialas en la consulta.
__________________
"La imaginación es más importante que el conocimiento. El conocimiento es limitado, mientras que la imaginación no" -- A.Einstein
objetivophp.com,twitter.com/objetivophp
  #11 (permalink)  
Antiguo 28/10/2012, 19:04
Avatar de portalmana  
Fecha de Ingreso: septiembre-2007
Ubicación: Montevideo-Uruguay
Mensajes: 633
Antigüedad: 16 años, 6 meses
Puntos: 80
Respuesta: Consultas en php

Código PHP:
Ver original
  1. // Ponemos la zona horaria por defecto.
  2. date_default_timezone_set('America/Montevideo');
  3. $fechaHoy   = date('Y-m-d H:i:s');
  4. $fechaAnt   = date('Y-m-d H:i:s',strtotime('-1 month'));
  5. $mysqlQuery = "SELECT * FROM fblike WHERE "
  6.             . "fecha BETWEEN '" . $fechaAnt . "' and '" . $fechaHoy . "' "
  7.             . "ORDER BY hits desc LIMIT 0,10";
  8.  
  9. echo $mysqlQuery . '<br><br>';
El resto ya es como tu lo haces
Código PHP:
Ver original
  1. $x=mysql_query($mysqlQuery);
  2.  $nr=0;
  3.  while ($y=mysql_fetch_assoc($x)) {
  4.      $id=$y['id'];
  5.      $like=htmlspecialchars($y['like']);
  6. }

Un comentario al margen:
Extencion mysql_xxxxxxx
El uso de esta función está desaconsejado. En su lugar debería usarse la extensión MySQLi o PDO_MySQL. Véase también la guía MySQL: escoger una API y las P+F relacionadas para más información. Las alternativas a esta función incluyen: (Manual PHP).

saludos
__________________
"La imaginación es más importante que el conocimiento. El conocimiento es limitado, mientras que la imaginación no" -- A.Einstein
objetivophp.com,twitter.com/objetivophp

Última edición por portalmana; 28/10/2012 a las 19:55

Etiquetas: html, sql
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:40.