ordenar base de datos de manera ascendente

Mensajes
12
Puntuación de reacción
0
hola a todos tengo una pagina web la cual le hago promocion via twitter

googleando por alli consegui la manera de hacerlo y me funciona pero no de la manera que yo espero

la cuestion es simple funciona de la siguiente manera

creas una base de datos alli introduces los twetts que deseas publicar y el codigo en php te los va publicando

pero hay un problema que siempre me envia practicamente los mismos tweets o tiene preferencia por algunos no mencionando otros que son tambien de importancia

en mi base de datos tengo 35 twetts me gustaria que los fuera publicando de uno en uno de manera ascendente osea empiece por el 1 luego el 2 despues el 3 mas adelante el 4 mas tarde el 5 y asi hasta llegar al 35 y se devuelva de nuevo al 1 y siga su ciclo de nuevo pero no consigo como hacerlo


ACA PEGO EL CODIGO ORIGINAL

Código:
<?php
//www.webinfopedia.com
//http://www.webinfopedia.com/auto-tweet-with-oauth-in-php.html esta es la pagina de donde saque la informacion pero en estos instante no funciona la pagina


$consumerKey    = 'mi consumer key';
$consumerSecret = ' mi consumer secret';
$oAuthToken     = 'mi oAuthToken';
$oAuthSecret    = 'mi oAuthSecret';

require_once('twitteroauth.php'); // este es un archivo que me descargue 

$tweet = new TwitterOAuth($consumerKey, $consumerSecret, $oAuthToken, $oAuthSecret);

require_once("db.php"); // este es mi archivo de conexion

$sql=mysql_query("select title from tweets order by rand()");
$showfetch=mysql_fetch_array($sql);
$tweet->post('statuses/update', array('status' => $showfetch['title'] ));

?>

ESTE ES OTRO EDITADO PERO ME DA LOS MISMOS ERRORES TWITTEA PERO DE MANERA ALEATORIA Y CON PREFERENCIA A CIERTOS TWEETS

Código:
<?php
//www.webinfopedia.com
//http://www.webinfopedia.com/auto-tweet-with-oauth-in-php.html


$consumerKey    = 'mi consumerkey';
$consumerSecret = 'mi consumersecret';
$oAuthToken     = 'mi oAuthToken';
$oAuthSecret    = 'mi oAuthSecret';

require_once('twitteroauth.php');

$tweet = new TwitterOAuth($consumerKey, $consumerSecret, $oAuthToken, $oAuthSecret);

require_once("db.php");
$i=0;
$sql=mysql_query("SELECT title FROM tweets ORDER BY id ASC");
while($row = mysql_fetch_array($sql)){
	$showfetch[$i++]['title']=$row;
}
shuffle($showfetch);
$tweet->post('statuses/update', array('status' => $showfetch[0]['title'] ));

?>


sinceramente ya no se que mas hacer
 
Mensajes
42
Puntuación de reacción
0
Buenas,

Si te fijas en la antepenúltima línea, tienes un
Código:
shuffle($showfetch);

Lo que hace esa función es mezclar de forma aleatoria, de ahí los resultados "raros" que te estaba dando.

Eso sí, si eliminas esa línea tendrás ahora otro problema: Siempre lanzará el mismo tweet, el primero. Usa otro contador mas una función sleep o cualquier otra cosa que se te ocurra.

Saludos,
 

ellisto

Piedra
Usuario de Piedra
Mensajes
46
Puntuación de reacción
0
Piensa que en ningún lado marcas un orden o tienes un código que te marque la secuencia de ejecución solamente aleatorio tal como comenta el compañero del post anterior.

La idea es añadir en la base de datos un campo llamado fecha, con el que cada vez que posteas actualizas la fecha de ese tweet en la base de datos, y siempre vas cogiendo el tweet con la fecha mas antigua.

Mas o menos seria así, seguro que algo me he comido, en caso de que no te aclares te lo puedo hacer yo por un módico precio, pero ya te digo te lo estoy dando todo abajo.

Solución:

En la base de datos:
Añadir un campo mas en la base de datos que sera la fecha con hora.

En el código:
En la selección de datos añadimos id, title si es que tiene id en la base de datos, ese valor nos servirá mas adelante, y cambiamos el rand() por el campo fecha

Antes:
PHP:
$sql=mysql_query("select title from tweets order by rand()");
Depues:
PHP:
$sql=mysql_query("select id,title from tweets order by fecha");

Y por ultimo para que todo esto funcione al final del código necesitas añadir algo asi
PHP:
$sql = mysql_query("UPDATE tweets SET fecha=now() WHERE id=$showfetch['id']);



Un saludo
 
Mensajes
6
Puntuación de reacción
0
Y por ultimo para que todo esto funcione al final del código necesitas añadir algo asi
PHP:
$sql = mysql_query("UPDATE tweets SET fecha=now() WHERE id=$showfetch['id']);

Be careful con esta query, evidentemente con un id que hayamos metido nosotros (en tu ejemplo) no pasaría nada, pero si este campo se substituye por un texto cualquiera (donde el usuario lo pueda meter el mismo), tendríamos una bonita inyección SQL. Se que es algo más engorroso, pero para "fortificar" las querys recomiendo encarecidamente usar prepared statements.

Por lo demás, tu solución es correcta amigo :)

PD: Perdona por citarte para esto, pero creo que es importante como aspecto de seguridad :)
 
Arriba